PivotTables pt = worksheet.PivotTables();
var pivot = pt.Item(1);
Microsoft.Office.Interop.Excel.PivotFields pf=
(Microsoft.Office.Interop.Excel.PivotFields)pivot.VisibleFields();
上面的代码段应该返回数据透视表中可见字段的集合,但是会生成MissingMemberException(调用[PROPERTYGET,DISPID(0)]时出错),但是以下代码可以正常工作:
Microsoft.Office.Interop.Excel.PivotFields pf=
(Microsoft.Office.Interop.Excel.PivotFields)pivot.PivotFields();
我只想要表中的可见字段,而不想要所有字段。
在将VBA转换为C#方面,我面临的最大挑战之一是VBA模糊了何时需要括号的函数和不需要括号的函数之间的界限。
结果,当一个函数没有参数并且不需要括号时,它看起来更像一个属性。情况就是这样PivotFields
。
因此,PivotFields()
在C#中所有所说的确实是一个method,因此您上面的语法是正确的。但是,VisibleFields
它是Property而不是方法,因此您需要省略括号以使其起作用:
Excel.PivotTables pt = worksheet.PivotTables();
var pivot = pt.Item(1);
Microsoft.Office.Interop.Excel.PivotFields vf = pivot.VisibleFields;
// not pivot.VisibleFields();
foreach (Microsoft.Office.Interop.Excel.PivotField f in vf)
{
// Do something
}
疯狂吧?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句