EPPlus - Pivot Table 如何将值显示为总计的百分比
EPPlus - Pivot Table how to show values as % of Grand Total
使用 EPPlus 库创建 Pivot table 时,我们可以使用 PivotTable.RowFields.Add(...)
函数添加行字段,类似地可以使用 PivotTable.DataFields.Add(...)
函数添加数据字段。
问题是当我想将数据字段的值显示为总计的百分比 (%) 时(见下图,实际 Excel 数据透视表 table 中使用的设置)。数据字段仅给出 DataFieldFunctions.Sum
、Count
、Average
等。但是,没有允许字段值显示为总计百分比的设置。
EPPlus 不支持枢轴数据字段的 "Show Value As" 功能,但是 this page 描述了一个很好的技巧来修改枢轴 table 后面的 XML 数据。
这背后的主要思想是,将数据字段的函数设置为求和,使用 EPPlus 将其显示格式设置为百分比,其余使用 OpenXML。
如果 pivotTable
是您的数据透视表,而 dataField
是您正在使用的数据字段,则上述页面上的代码示例提供了以下解决方案:
var xdoc = pivotTable.PivotTableXml;
var nsm = new XmlNamespaceManager(xdoc.NameTable);
var schemaMain = xdoc.DocumentElement.NamespaceURI;
if (nsm.HasNamespace("x") == false)
nsm.AddNamespace("x", schemaMain);
var dataFieldNode = xdoc.SelectSingleNode(
"/x:pivotTableDefinition/x:dataFields/x:dataField[@name='" + dataField.Name + "']",
nsm
);
dataFieldNode.AppendAttribute("showDataAs", "percentOfTotal");
使用 EPPlus 库创建 Pivot table 时,我们可以使用 PivotTable.RowFields.Add(...)
函数添加行字段,类似地可以使用 PivotTable.DataFields.Add(...)
函数添加数据字段。
问题是当我想将数据字段的值显示为总计的百分比 (%) 时(见下图,实际 Excel 数据透视表 table 中使用的设置)。数据字段仅给出 DataFieldFunctions.Sum
、Count
、Average
等。但是,没有允许字段值显示为总计百分比的设置。
EPPlus 不支持枢轴数据字段的 "Show Value As" 功能,但是 this page 描述了一个很好的技巧来修改枢轴 table 后面的 XML 数据。
这背后的主要思想是,将数据字段的函数设置为求和,使用 EPPlus 将其显示格式设置为百分比,其余使用 OpenXML。
如果 pivotTable
是您的数据透视表,而 dataField
是您正在使用的数据字段,则上述页面上的代码示例提供了以下解决方案:
var xdoc = pivotTable.PivotTableXml;
var nsm = new XmlNamespaceManager(xdoc.NameTable);
var schemaMain = xdoc.DocumentElement.NamespaceURI;
if (nsm.HasNamespace("x") == false)
nsm.AddNamespace("x", schemaMain);
var dataFieldNode = xdoc.SelectSingleNode(
"/x:pivotTableDefinition/x:dataFields/x:dataField[@name='" + dataField.Name + "']",
nsm
);
dataFieldNode.AppendAttribute("showDataAs", "percentOfTotal");