c# - 在数据透视字段上应用数字格式

标签 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";

最佳答案

关于这些成员的文档不是很清楚,但经过一些挖掘和反复试验后,看起来您想要的属性是 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 对象循环访问它们:

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

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

关于c# - 在数据透视字段上应用数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9606875/

相关文章:

mysql - 允许远程 MySQL 连接

c# - 在 Json.NET 中是否有用于将枚举序列化为字符串的任何属性?

c# - 免费的 FTP 库

C# -- 是否需要检查 "obj is Person && obj != null"

c# - Excel 和 C#.NET

c# - 使用 VSTO 检测 Word 2007 文档中的当前签名

c# - 将字节数组转换为 PNG/JPG

vba - 错误 1004 - 打开工作簿

oracle - PL/SQL 将查询结果分配给 CLOB

c# - 如何创建自定义 Outlook 项目?