Excel数据透视表中的c#折叠字段

我有一个预制的Excel数据透视表,从另一个工作表中获取数据,我填写通过C#代码。

在数据透视表中有3行字段,在填充完毕后,通过代码刷新数据透视表,在打开Excel之后对所有行进行扩展。

我已经尝试使用DrilledDown方法(在字段中,但我得到一个错误),ShowDetails只适用于项目(在字段内)。

我得到它的工作,但它需要太多的时间,因为它在每个项目中使用ShowDetails,有没有其他办法,并迅速崩溃的领域? (打开Excel并手动执行,而不是一个选项:P)。

我的代码(这是崩溃的领域):

listItems.Add("Data"); listItems.Add("Months"); listItems.Add("Grocery"); Microsoft.Office.Interop.Excel.PivotFields pfs = (Microsoft.Office.Interop.Excel.PivotFields)pivot.PivotFields(); foreach (String s in listItems){ Microsoft.Office.Interop.Excel.PivotField pf = (Microsoft.Office.Interop.Excel.PivotField)pivot.PivotFields(s); foreach (Microsoft.Office.Interop.Excel.PivotItem item in (Microsoft.Office.Interop.Excel.PivotItems)pf.PivotItems()) { if (item.Value == "(blank)") item.Visible = false; item.ShowDetail = false; } } 

事情是,也许有一个简单而快捷的方法? 我正在尝试类似的东西

 pf.DrilledDown = False; 

要么

 pf.ShowDetail = False; 

但它不起作用..:\任何想法?

TIA

那么,从某种方式来pipe理,只是折叠每个领域的第一个项目(这种方式周期不会走到最后,因为Excel自动折叠其他类似的项目(当你折叠一个相同types的领域),它的作品)。

PS:因为从杂货店的第一个领域是“空白”的,所以我知道在“_blank”之后总是有一些东西,但是我不能仅仅应用到“_blank”的倒塌,因为那样它就没有适用于其他项目(我认为它必须是内有价值的东西)。

所以…得到了这个(这是更快,但仍然,我认为它应该存在另一种方式(在c#中更简单的代码(不使用Excel中的VBmacros)),但如果有,很难find – 很less有人以编程方式操作数据透视表。

  listItems.Add("Date"); listItems.Add("Months"); listItems.Add("Groceries"); Microsoft.Office.Interop.Excel.PivotFields pfs = (Microsoft.Office.Interop.Excel.PivotFields)pivot.PivotFields(); foreach (String s in listItems) { Microsoft.Office.Interop.Excel.PivotField pf = (Microsoft.Office.Interop.Excel.PivotField)pivot.PivotFields(s); foreach (Microsoft.Office.Interop.Excel.PivotItem item in (Microsoft.Office.Interop.Excel.PivotItems)pf.PivotItems()) { if (pf.Value == "Date") { item.ShowDetail = false; break; } if (pf.Value == "Months") { item.ShowDetail = false; break; } if (pf.Value == "Groceries") { if (item.Value == "(blank)") { item.Visible = false; continue; } item.ShowDetail = false; break; } } }