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();
我只想要表格中的可见字段而不是所有字段。
答案 0 :(得分:0)
将VBA转换为C#时遇到的最大挑战之一就是VBA在需要括号的功能与不需要括号的功能之间模糊了界限。
因此,当函数没有参数且不需要括号时,它看起来更像是属性。 PivotFields
就是这种情况。
所有这一切,C#中的PivotFields()
确实是方法,因此上面的语法是正确的。但是,VisibleFields
是属性,而不是方法,因此您需要省略括号才能使其正常工作:
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
}
疯了,对吧?