PivotTable

PivotTable class

数据透视表的摘要描述。

public class PivotTable : IDisposable

特性

姓名描述
AltTextDescription { get; set; }获取替代文本的描述
AltTextTitle { get; set; }获取 altertext 的标题
AutoFormatType { get; set; }获取数据透视表自动格式化类型。
BaseFields { get; }返回一个 PivotFields 对象,其中包括数据透视表报告中的所有字段
ColumnFields { get; }返回当前显示为列字段的 PivotFields 对象。
ColumnGrand { get; set; }指示数据透视表是否显示列的总计。
ColumnHeaderCaption { get; set; }获取数据透视表的列标题标题。
ColumnRange { get; }返回代表 range 的 CellArea 对象,该对象包含数据透视表中的列区域。只读。
CustomListSort { get; set; }表示排序数据时是否考虑内置自定义列表
DataBodyRange { get; }返回一个 CellArea 对象,该对象表示在标题行和插入行之间的列表中包含数据 area 的范围。只读。
DataField { get; }获取一个PivotField 对象,表示数据透视表中的所有数据字段。 只读。只有当DataPiovtFiels 中有两个或多个数据字段时才会初始化。 仅用于将DataPivotField 添加到数据透视表的行/列区域 。默认在行区域中。
DataFields { get; }获取一个PivotField 对象,表示数据透视表中的所有数据字段。 只读。只有当DataPiovtFiels 中有两个或多个数据字段时才会初始化。 仅用于将DataPivotField 添加到数据透视表的行/列区域 。默认在行区域中。
DataSource { get; set; }获取和设置数据透视表的数据源。
DisplayErrorString { get; set; }指示数据透视表是否在包含错误的单元格中显示自定义字符串。
DisplayImmediateItems { get; set; }表示当数据透视表的数据区为空时,行和列区域的项目是否可见 。默认值为真。
DisplayNullString { get; set; }指示数据透视表是否在包含空值的单元格中显示自定义字符串 。
EnableDataValueEditing { get; set; }指定一个布尔值,指示是否允许用户编辑数据透视表的数据区域中的单元格。 启用值区域中的单元格编辑
EnableDrilldown { get; set; }获取是否启用向下钻取。
EnableFieldDialog { get; set; }指示当用户双击数据透视表字段时,数据透视表字段对话框是否可用 。
EnableFieldList { get; set; }获取是否启用数据透视表的字段列表。
EnableWizard { get; set; }指示数据透视表向导是否可用。
ErrorString { get; set; }当 DisplayErrorString 属性为 true 时,获取在包含错误 的单元格中显示的字符串。默认值为空字符串。
ExternalConnectionDataSource { get; }获取外部连接数据源。
FieldListSortAscending { get; set; }指定一个布尔值,指示数据透视表中的字段是否按字段列表中的非默认顺序排序。
GrandTotalName { get; set; }返回显示在总计列或行标题中的文本字符串标签。 默认值为字符串“总计”。
HasBlankRows { get; set; }表示是否添加空白行。 该属性仅适用于需要添加空白行的数据透视表自动格式类型。
Indent { get; set; }指定紧凑轴的缩进增量,可用于将报表布局设置为紧凑形式。
IsAutoFormat { get; set; }指示数据透视表报表是否自动格式化。 复选框“自动格式化表”,位于 Excel 2003 的数据透视表选项中 复选框“更新时自动调整列宽”,位于数据透视表选项中:Excel 2007 的布局格式
IsExcel2003Compatible { get; set; }指定刷新数据透视表时数据透视表是否兼容Excel2003, 如果为true,字符串必须小于等于255个字符,所以如果字符串大于255个字符, 会被截断。如果为false,则字符串将没有上述限制。 默认值为true。
IsGridDropZones { get; set; }指示数据透视表是否显示经典的数据透视表布局。 (允许在网格中拖动字段)
IsMultipleFieldFilters { get; set; }指定一个布尔值,指示数据透视表的字段是否可以设置多个过滤器。
IsSelected { get; set; }表示是否选择了数据透视表。
ItemPrintTitles { get; set; }一个位,指定是否在每个打印页面上为表格形式的枢轴字段重复轴 行上的枢轴项目标题。
ManualUpdate { get; set; }指示是否仅应用户请求重新计算数据透视表。
MergeLabels { get; set; }指示指定数据透视表的外行项、列项、小计、 和总计标签是否使用合并单元格。
MissingItemsLimit { get; set; }指定一个布尔值,指示数据透视表的字段是否可以设置多个过滤器。
Name { get; set; }获取数据透视表的名称
NullString { get; set; }当 DisplayNullString 属性为 true 时,获取包含空值的单元格中显示的字符串 。默认值为空字符串。
PageFieldOrder { get; set; }获取页面字段添加到数据透视表布局的顺序。
PageFields { get; }返回当前显示为页面字段的 PivotFields 对象。
PageFieldWrapCount { get; set; }获取数据透视表中每列或每行的页字段数。
PivotFilters { get; }返回一个 PivotFilterCollection 对象。
PivotFormatConditions { get; }获取数据透视表的格式条件。
PivotTableStyleName { get; set; }获取和设置可透视的样式名称。
PivotTableStyleType { get; set; }获取和设置内置数据透视表样式。
PreserveFormatting { get; set; }表示刷新或重新计算数据透视表时是否保留格式。
PrintDrill { get; set; }指定一个布尔值,指示是否应打印钻孔指示器。 当显示在数据透视表上时打印展开/折叠按钮。
PrintTitles { get; set; }指示工作表的打印标题是否在数据透视表上设置为 based 。默认值为假。
RefreshDataFlag { get; set; }表示是否刷新数据。
RefreshDataOnOpeningFile { get; set; }表示打开文件时是否刷新数据。
RefreshDate { get; }获取上次刷新数据透视表的日期。
RefreshedByWho { get; }获取上次刷新数据透视表的用户名
RowFields { get; }返回当前显示为行字段的 PivotFields 对象。
RowGrand { get; set; }指示数据透视表是否显示行总计。
RowHeaderCaption { get; set; }获取数据透视表的行标题标题。
RowRange { get; }返回代表 range 的 CellArea 对象,该对象包含数据透视表中的行区域。只读。
SaveData { get; set; }指示数据透视表的数据是否与工作簿一起保存。
ShowDataTips { get; set; }指定一个布尔值,该值指示是否应为数据透视表数据单元格显示工具提示。
ShowDrill { get; set; }获取是否显示展开/折叠按钮。
ShowEmptyCol { get; set; }指定一个布尔值,指示是否在表中包含空列
ShowEmptyRow { get; set; }指定一个布尔值,指示是否在表中包含空行。
ShowMemberPropertyTips { get; set; }指定一个布尔值,指示是否应从数据透视表工具提示中省略成员属性信息。
ShowPivotStyleColumnHeader { get; set; }指示数据透视表中的列标题是否应应用样式。
ShowPivotStyleColumnStripes { get; set; }指示是否应用列带格式。
ShowPivotStyleLastColumn { get; set; }指示是否应用列带格式。
ShowPivotStyleRowHeader { get; set; }指示数据透视表中的行标题是否应应用样式。
ShowPivotStyleRowStripes { get; set; }指示是否应用行条纹格式。
ShowRowHeaderCaption { get; set; }指示是否在数据透视表中显示行标题标题 指示是否显示字段标题和过滤器下拉菜单
ShowValuesRow { get; set; }指定一个布尔值,指示是否显示值行。 显示值行
SubtotalHiddenPageItems { get; set; }表示数据透视表报表 中隐藏的页面字段项是否包含在行列小计、块总计和总计中。 默认值为False。
TableRange1 { get; }返回一个 CellArea 对象,该对象表示包含整个数据透视表的范围, 但不包括页面字段。只读。
TableRange2 { get; }返回一个 CellArea 对象,表示包含整个数据透视表的范围, 包括页面字段。只读。
Tag { get; set; }获取与数据透视表一起保存的字符串。

方法

姓名描述
AddCalculatedField(string, string)将计算字段添加到数据透视字段并将其拖动到数据区域。
AddCalculatedField(string, string, bool)将计算字段添加到数据透视字段。
AddFieldToArea(PivotFieldType, int)将字段添加到特定区域。
AddFieldToArea(PivotFieldType, PivotField)将字段添加到特定区域。
AddFieldToArea(PivotFieldType, string)将字段添加到特定区域。
CalculateData()将数据透视表的数据计算到单元格。
CalculateRange()计算数据透视表的范围。
ChangeDataSource(string[])设置数据透视表的源数据。 Sheet1!$A$1:$C$3
ClearData()清除数据透视表的数据和格式
CopyStyle(PivotTable)从另一个数据透视表复制命名样式。
Dispose()执行与释放、释放或 重置非托管资源相关的应用程序定义任务。
Fields(PivotFieldType)通过字段类型获取具体字段
Format(int, int, Style)格式化可透视区域中的单元格
FormatAll(Style)格式化可透视区域中的所有单元格
FormatRow(int, Style)格式化数据透视区中的行数据
GetCellByDisplayName(string)通过PivotField的DisplayName获取Cell对象
GetChildren()获取使用此数据透视表数据作为数据源的子数据透视表。
GetHorizontalBreaks()获取水平分页符的数据透视表行索引列表
GetSource()获取数据透视表的源数据。
Move(string)将数据透视表移动到工作表中的不同位置。
Move(int, int)将数据透视表移动到工作表中的不同位置。
RefreshData()刷新数据透视表的数据并从它的数据源设置。
RemoveField(PivotFieldType, int)从特定字段 area 中删除字段
RemoveField(PivotFieldType, PivotField)从特定字段区域中删除字段
RemoveField(PivotFieldType, string)从特定字段 area 中删除字段
SetAutoGroupField(int)通过数据透视表设置自动字段组。
SetAutoGroupField(PivotField)通过数据透视表设置自动字段组。
SetManualGroupField(int, DateTime, DateTime, ArrayList, int)通过数据透视表设置手动字段组。
SetManualGroupField(int, double, double, ArrayList, double)通过数据透视表设置手动字段组。
SetManualGroupField(PivotField, DateTime, DateTime, ArrayList, int)通过数据透视表设置手动字段组。
SetManualGroupField(PivotField, double, double, ArrayList, double)通过数据透视表设置手动字段组。
SetUngroup(int)设置按数据透视表取消分组
SetUngroup(PivotField)设置按数据透视表取消分组
ShowInCompactForm()以紧凑的形式布局数据透视表。
ShowInOutlineForm()以大纲形式布局数据透视表。
ShowInTabularForm()以表格形式布局数据透视表。
ShowReportFilterPage(PivotField)根据PivotField显示所有报表过滤页面,PivotField必须位于PageFields中。
ShowReportFilterPageByIndex(int)根据PageFields中的位置索引显示所有报表过滤页面
ShowReportFilterPageByName(string)根据PivotField的名称显示所有报表过滤页面,PivotField必须位于PageFields中。

例子


[C#]

Workbook book = new Workbook();
Worksheet sheet = book.Worksheets[0];
Cells cells = sheet.Cells;
cells[0, 0].Value = "fruit";
cells[1, 0].Value = "grape";
cells[2, 0].Value = "blueberry";
cells[3, 0].Value = "kiwi";
cells[4, 0].Value = "cherry";
cells[5, 0].Value = "grape";
cells[6, 0].Value = "blueberry";
cells[7, 0].Value = "kiwi";
cells[8, 0].Value = "cherry";

cells[0, 1].Value = "year";
cells[1, 1].Value = 2020;
cells[2, 1].Value = 2020;
cells[3, 1].Value = 2020;
cells[4, 1].Value = 2020;
cells[5, 1].Value = 2021;
cells[6, 1].Value = 2021;
cells[7, 1].Value = 2021;
cells[8, 1].Value = 2021;

cells[0, 2].Value = "amount";
cells[1, 2].Value = 50;
cells[2, 2].Value = 60;
cells[3, 2].Value = 70;
cells[4, 2].Value = 80;
cells[5, 2].Value = 90;
cells[6, 2].Value = 100;
cells[7, 2].Value = 110;
cells[8, 2].Value = 120;

PivotTableCollection pivots = sheet.PivotTables;

int pivotIndex = pivots.Add("=Sheet1!A1:C9", "A12", "TestPivotTable");
PivotTable pivot = pivots[pivotIndex];
pivot.AddFieldToArea(PivotFieldType.Row, "fruit");
pivot.AddFieldToArea(PivotFieldType.Column, "year");
pivot.AddFieldToArea(PivotFieldType.Data, "amount");

pivot.PivotTableStyleType = PivotTableStyleType.PivotTableStyleMedium10;

//改变PivotField的属性
PivotField rowField = pivot.RowFields[0];
rowField.DisplayName = "custom display name";

//添加透视过滤器
int index = pivot.PivotFilters.Add(0, PivotFilterType.Count);
PivotFilter filter = pivot.PivotFilters[index];
filter.AutoFilter.FilterTop10(0, false, false, 2);

//添加PivotFormatCondition
int formatIndex = pivot.PivotFormatConditions.Add();
PivotFormatCondition pfc = pivot.PivotFormatConditions[formatIndex];
FormatConditionCollection fcc = pfc.FormatConditions;
fcc.AddArea(pivot.DataBodyRange);
int idx = fcc.AddCondition(FormatConditionType.CellValue);
FormatCondition fc = fcc[idx];
fc.Formula1 = "100";
fc.Operator = OperatorType.GreaterOrEqual;
fc.Style.BackgroundColor = Color.Red;

pivot.RefreshData();
pivot.CalculateData();

//做你的事

book.Save("out.xlsx");

[Visual Basic]

Dim book As Workbook = New Workbook()
Dim sheet As Worksheet = book.Worksheets(0)
Dim cells As Cells = sheet.Cells

cells(0, 0).Value = "fruit"
cells(1, 0).Value = "grape"
cells(2, 0).Value = "blueberry"
cells(3, 0).Value = "kiwi"
cells(4, 0).Value = "cherry"
cells(5, 0).Value = "grape"
cells(6, 0).Value = "blueberry"
cells(7, 0).Value = "kiwi"
cells(8, 0).Value = "cherry"

cells(0, 1).Value = "year"
cells(1, 1).Value = 2020
cells(2, 1).Value = 2020
cells(3, 1).Value = 2020
cells(4, 1).Value = 2020
cells(5, 1).Value = 2021
cells(6, 1).Value = 2021
cells(7, 1).Value = 2021
cells(8, 1).Value = 2021

cells(0, 2).Value = "amount"
cells(1, 2).Value = 50
cells(2, 2).Value = 60
cells(3, 2).Value = 70
cells(4, 2).Value = 80
cells(5, 2).Value = 90
cells(6, 2).Value = 100
cells(7, 2).Value = 110
cells(8, 2).Value = 120

Dim pivots As PivotTableCollection = sheet.PivotTables
Dim pivotIndex As Int32 = pivots.Add("=Sheet1!A1:C9", "A12", "TestPivotTable")
Dim pivot As PivotTable = pivots(pivotIndex)
pivot.AddFieldToArea(PivotFieldType.Row, "fruit")
Pivot.AddFieldToArea(PivotFieldType.Column, "year")
Pivot.AddFieldToArea(PivotFieldType.Data, "amount")

pivot.PivotTableStyleType = PivotTableStyleType.PivotTableStyleMedium10

'Change PivotField's attributes
Dim rowField As PivotField = pivot.RowFields(0)
rowField.DisplayName = "custom display name"

'添加透视过滤器
Dim filterIndex As Int32 = pivot.PivotFilters.Add(0, PivotFilterType.Count)
Dim filter As PivotFilter = pivot.PivotFilters(filterIndex)
filter.AutoFilter.FilterTop10(0, False, False, 2)

'添加 PivotFormatCondition
Dim formatIndex As Int32 = pivot.PivotFormatConditions.Add()
Dim pfc As PivotFormatCondition = pivot.PivotFormatConditions(formatIndex)
Dim fcc As FormatConditionCollection = pfc.FormatConditions
fcc.AddArea(pivot.DataBodyRange)
Dim idx As Int32 = fcc.AddCondition(FormatConditionType.CellValue)
Dim fc As FormatCondition = fcc(idx)
fc.Formula1 = "100"
fc.Operator = OperatorType.GreaterOrEqual
fc.Style.BackgroundColor = Color.Red

pivot.RefreshData()
pivot.CalculateData()

book.Save("out_vb.xlsx")

也可以看看