c# - EPPlus - 数据透视表如何将值显示为总计的百分比
问题描述
使用 EPPlus 库创建数据透视表时,我们可以使用函数添加行字段PivotTable.RowFields.Add(...)
,同样可以使用PivotTable.DataFields.Add(...)
函数添加数据字段。
问题是当我想将数据字段的值显示为总计的百分比 (%) 时(见下图,实际 Excel 数据透视表中使用的设置)。数据字段仅给出DataFieldFunctions.Sum
、Count
等Average
。但是,没有设置允许字段值显示为总计的百分比。
解决方案
EPPlus 不支持透视数据字段的“将值显示为”功能,但是这个页面描述了一个修改透视表后面的 XML 数据的好技巧。
这背后的主要思想是,您将数据字段的函数设置为求和,并将其显示格式设置为 EPPlus 的百分比,其余的使用 OpenXML。
如果pivotTable
是您的 Pivot 并且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");
推荐阅读
- php - Laravel 6.x:UserController 中的更新方法
- amazon-web-services - 如何列出具有策略类型的角色:“AWS 托管策略”?
- arrays - 使用excel公式根据条件按顺序获取数组
- android-studio - 尝试在android上构建应用程序时如何解决“无法解析结果路径字符串:”?
- spring - Spring Data Elasticsearch 2.2.3.RELEASE中如何配置Rest高级客户端的socket超时
- string - 在 Bash 中将变量写入文件时添加了额外的新行
- c++ - read() 函数被卡住并冻结而没有响应
- android - Android - 辅助功能“对讲”使系统大声朗读图像单词;为图像添加“图像”后缀
- symfony - Symfony 5 在用户注销后保留会话属性
- java - 计算长数中的设置位数