簡體   English   中英

在Epplus中創建沒有基表的數據透視表(C#)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM