繁体   English   中英

如何从C#(Microsoft.Office.Interop.Excel)中的数据透视表对象获取可见的PivotField对象

[英]How to get Visible PivotField Object from a PivotTable object in C#(Microsoft.Office.Interop.Excel)

 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#中的PivotFields()确实是一个方法 ,因此上面的语法是正确的。 但是, VisibleFieldsProperty而不是方法,因此您需要省略括号以使其起作用:

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
}

疯狂吧?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM