[英]Create pivot table without the base table in Epplus (C#)
可以創建Excel文件而不放在spreedsheet基表中嗎? 或者至少該基表位於其他工作表中而不是數據透視表。
目前我在添加行和...后創建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"]);
.
.
.
似乎只能從工作簿中已存在的數據創建EPPlus數據透視表; 所以你必須將源表放入電子表格。
好消息是您可以在不同的工作表中輕松擁有數據透視表和基表:
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");
我假設您不希望將基表放入電子表格中,因為它要么相當大,要么只包含敏感細節。 在這種情況下,您可以將基表與C#代碼聚合(按用於數據透視表行和列的列進行分組),並使用分組結果作為Excel數據透視表的基表。 可以使用PivotData庫簡單地執行聚合 - 如果您對此方式感興趣並需要更多解釋(我是此庫的作者),請告訴我。
絕對! 只需使用PivotTable.SourceData設置數據透視表的數據源即可指定連接字符串。
https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.pivottable.sourcedata.aspx
對我有用的一個不同的方法如下:
var dataRange = rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Address];
var pivotTable =
pivotTableWorksheet.PivotTables.Add(pivotTableWorksheet.Cells["A6"]
dataRange, "PivotTable");
“rawDataWorksheet”是包含源數據的工作表; “pivotTableWorksheet”是您要在其上填充數據透視表的工作表。 在上面的代碼中,它從列A(1)和第6行的交叉點開始,但是當然可以使用另一個目標單元格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.