我有一个预先制作的Excel与数据透视表,从另一个工作表中获取数据,我通过C#代码填充。
在数据透视表中有三个行字段,在通过代码填充和刷新数据透视表后,打开Excel后会展开所有行。
我已经尝试过使用DrilledDown
方法(在字段中,但我得到了一个错误),ShowDetails
只在项目中工作(在字段内)。
我让它工作,但它花了太多的时间,因为它在每个项目中使用ShowDetails
,有没有其他方法,并快速折叠字段?(打开Excel和手动做它不是一个选项)。
我的代码(折叠字段):
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;
但它不工作。有什么想法?
1条答案
按热度按时间bejyjqdl1#
好吧,设法只折叠每个字段中的第一项(这样循环不会一直进行到最后,而且由于Excel会自动折叠其他类似的项(当您折叠同一类型的字段之一时),它会起作用)。
PS:因为杂货店的第一个字段总是“_blank”,我知道肯定在“_blank”之后总是有一些东西,但我不能只对“_blank”应用折叠,因为这样它就不适用于其他项目(我认为它必须是里面有值的东西)。
所以...得到了这个(它快得多,但我仍然认为它应该以另一种方式存在(用C#中更简单的代码(不使用Excel中的VB宏)),但如果有,很难找到-很少有人通过编程操作数据透视表。