在透视字段上应用数字格式

我能够使用Microsoft.Office.Interop.Excel.PivotFields属性在透视字段上应用NumberFormat。 但这不会将相同的格式应用于总结字段。 数据透视表中是否有任何单独的属性用于数据透视表?

Microsoft.Office.Interop.Excel.PivotFields pFields = pivotTable.PivotFields(); foreach (Microsoft.Office.Interop.Excel.PivotField pf in pFields) if (pf.DataType == XlPivotFieldDataType.xlNumber) pf.NumberFormat = "#,##0.00"; 

这些成员的文档不完全清晰,但经过一些挖掘和反复试验后,它看起来像你想要的属性是PivotTable.VisibleFields ,你需要投到一个PivotFields对象遍历:

 Excel.PivotFields vFields = (Excel.PivotFields)pivotTable.VisibleFields; 

这将给你在表中的所有可见的领域(而不是PivotTable.PivotFields()似乎只给你行标签列和底层的源数据)。 在设置数字格式之前,您可能需要检查每个数值,否则我相信它会将其应用于表格中的所有内容,这可能不是您想要的:

 foreach (Excel.PivotField pf in vFields) { if (pf.DataType == Excel.XlPivotFieldDataType.xlNumber & pf.Value == "Sum of Price") { pf.NumberFormat = "#,##0.00"; } } 

如果您想要特别访问一个单元格,则可以访问PivotField.PivotItems并遍历每个PivotField对象的那些单元PivotField

  Excel.PivotItems pi = (Excel.PivotItems)pf.PivotItems(); 

但是我认为PivotItem大部分属性都是只读的。