EPPlus数据透视表 - 折叠整个字段

Joh*_*tos 6 .net c# vb.net openxml epplus

有谁知道如何做到这一点?

我在.Net中使用EPPlus并创建了一个包含2个行字段和一个摘要数据字段的数据透视表:

Dim Pivot As OfficeOpenXml.Table.PivotTable.ExcelPivotTable
Pivot = wksPivot.PivotTables.Add(wksPivot.Cells("A1"), Datarange, "pName")

Pivot.RowFields.Add(Pivot.Fields("Fld1")).Sort = Table.PivotTable.eSortType.Ascending
Pivot.RowFields.Add(Pivot.Fields("Fld2")).Sort = Table.PivotTable.eSortType.Ascending

Dim dtaFld As OfficeOpenXml.Table.PivotTable.ExcelPivotTableDataField
dtaFld = Pivot.DataFields.Add(Pivot.Fields("XYZ"))
dtaFld.Function = Table.PivotTable.DataFieldFunctions.Sum
Run Code Online (Sandbox Code Playgroud)

一切都很好,但我希望在用户打开工作簿时将数据透视表开始折叠(在Excel中,当您创建数据透视表时,可以右键单击数据元素并选择"展开/折叠" ">"折叠整个字段"

我可以通过代码来做到这一点吗?(如果EPPlus还不支持,我愿意使用直接的OpenXML ......)

ALSO,有没有办法从工作簿,以便数据透视表仍然有效删除了原始数据?我试过,当我打开工作簿时,我的数据透视表是空白的?- 我现在的逻辑让我想到了这个问题 ......有什么想法?

(我知道我在VB中写了这个问题.但我在这个问题上添加了两个C#&VB标签 - 我对任何一种语言的代码感到满意 - 谢谢!!)

Pau*_*hra -1

使用 EPPlus 您可以尝试类似的操作(摘自此 SO 帖子):

(from pf in pivot.Fields
 select pf).ToList().ForEach(f =>
 {
     f.Compact = false;
     f.Outline = false;
 });
Run Code Online (Sandbox Code Playgroud)

或者更简单地说,像下面这样的东西不起作用吗?

pvtTable.Compact = False
pvtTable.CompactData = False
pvtTable.Outline = False
pvtTable.OutlineData = False
pvtTable.ShowDrill = True
Run Code Online (Sandbox Code Playgroud)

另请参阅这篇 SO 文章,其中详细介绍了一种很好的逆向工程方法,用于了解 excel 如何实现“事物”。

PS 抱歉,无法帮助您解决其他“另外”问题。