在 Epplus (C#) 中创建没有基数 table 的主元 table
Create pivot table without the base table in Epplus (C#)
有没有可能创建 Excel 文件而不放在电子表格中 table?或者至少该基数 table 在其他工作表中而不是 pivot table.
目前我创建了 DataColumn,在添加行之后...
ExcelWorksheet worksheet = pkg.Workbook.Worksheets.Add("Table");
worksheet.Cells["A1"].LoadFromDataTable(table, true);
var pivotTable = worksheet.PivotTables.Add(worksheet.Cells["H14"],
worksheet.Cells[rangePivotTable], "pivTable");
pivotTable.RowFields.Add(pivotTable.Fields["Grid"]);
.
.
.
当然!只需使用 PivotTable.SourceData 指定连接字符串来设置数据透视表 table 的数据源。
https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.pivottable.sourcedata.aspx
EPPlus PivotTable 似乎只能根据工作簿中已有的数据创建;所以您必须将来源 table 放入电子表格。
好消息是,您可以轻松地在不同的工作表中拥有主元 table 和基数 table:
var wsPvt = pkg.Workbook.Worksheets.Add( "Pivot Table" );
var wsData = pkg.Workbook.Worksheets.Add( "Source Data" );
var rangePivotTable = wsData.Cells["A1"].LoadFromDataTable( tbl, true );
var pivotTable = wsPvt.PivotTables.Add(
ws.Cells[1,1],
rangePivotTable, "pvtTable");
我假设您不想将基础 table 放入电子表格,因为它要么相当大,要么只包含敏感细节。在这种情况下,您可以使用 C# 代码聚合基础 table(按用于数据透视表 table 行和列的列分组)并将分组结果用作 table 的基础 Excel枢轴 Table。可以使用 PivotData 库简单地执行聚合——如果您对这种方式感兴趣并需要更多解释,请告诉我(我是该库的作者)。
一种对我有用的有点不同的方法如下:
var dataRange = rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Address];
var pivotTable =
pivotTableWorksheet.PivotTables.Add(pivotTableWorksheet.Cells["A6"]
dataRange, "PivotTable");
"rawDataWorksheet" 是包含源数据的 sheet; "pivotTableWorksheet" 是您要放置数据透视表的 sheet。在上面的代码中,它从 A 列 (1) 和第 6 行的交叉点开始,但是您当然可以使用另一个目标单元格。
有没有可能创建 Excel 文件而不放在电子表格中 table?或者至少该基数 table 在其他工作表中而不是 pivot table.
目前我创建了 DataColumn,在添加行之后...
ExcelWorksheet worksheet = pkg.Workbook.Worksheets.Add("Table");
worksheet.Cells["A1"].LoadFromDataTable(table, true);
var pivotTable = worksheet.PivotTables.Add(worksheet.Cells["H14"],
worksheet.Cells[rangePivotTable], "pivTable");
pivotTable.RowFields.Add(pivotTable.Fields["Grid"]);
.
.
.
当然!只需使用 PivotTable.SourceData 指定连接字符串来设置数据透视表 table 的数据源。
https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.pivottable.sourcedata.aspx
EPPlus PivotTable 似乎只能根据工作簿中已有的数据创建;所以您必须将来源 table 放入电子表格。
好消息是,您可以轻松地在不同的工作表中拥有主元 table 和基数 table:
var wsPvt = pkg.Workbook.Worksheets.Add( "Pivot Table" );
var wsData = pkg.Workbook.Worksheets.Add( "Source Data" );
var rangePivotTable = wsData.Cells["A1"].LoadFromDataTable( tbl, true );
var pivotTable = wsPvt.PivotTables.Add(
ws.Cells[1,1],
rangePivotTable, "pvtTable");
我假设您不想将基础 table 放入电子表格,因为它要么相当大,要么只包含敏感细节。在这种情况下,您可以使用 C# 代码聚合基础 table(按用于数据透视表 table 行和列的列分组)并将分组结果用作 table 的基础 Excel枢轴 Table。可以使用 PivotData 库简单地执行聚合——如果您对这种方式感兴趣并需要更多解释,请告诉我(我是该库的作者)。
一种对我有用的有点不同的方法如下:
var dataRange = rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Address];
var pivotTable =
pivotTableWorksheet.PivotTables.Add(pivotTableWorksheet.Cells["A6"]
dataRange, "PivotTable");
"rawDataWorksheet" 是包含源数据的 sheet; "pivotTableWorksheet" 是您要放置数据透视表的 sheet。在上面的代码中,它从 A 列 (1) 和第 6 行的交叉点开始,但是您当然可以使用另一个目标单元格。