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

时间:2012-03-07 18:12:05

标签: c# excel vsto

我可以使用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";

1 个答案:

答案 0 :(得分:1)

关于这些成员的文档并不是很清楚,但经过一些挖掘和反复试验之后,看起来你想要的属性是PivotTable.VisibleFields,你需要将其转换为{{1}对象迭代:

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

但我认为 Excel.PivotItems pi = (Excel.PivotItems)pf.PivotItems(); 的大部分属性都是只读的。