【问题标题】:EPPlus - Pivot Table how to show values as % of Grand TotalEPPlus - 数据透视表如何将值显示为总计的百分比
【发布时间】:2020-06-15 05:51:06
【问题描述】:

当使用 EPPlus 库创建数据透视表时,我们可以使用 PivotTable.RowFields.Add(...) 函数添加行字段,同样可以使用 PivotTable.DataFields.Add(...) 函数添加数据字段。

问题是当我想将数据字段的值显示为总计的百分比 (%) 时(见下图,实际 Excel 数据透视表中使用的设置)。数据字段仅给出DataFieldFunctions.SumCountAverage 等。但是,没有设置允许字段值显示为总计的百分比。

【问题讨论】:

    标签: c# pivot-table epplus


    【解决方案1】:

    EPPlus 不支持透视数据字段的“将值显示为”功能,但this page 描述了一个修改透视表后面的 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");
    

    【讨论】:

    • 有效!!感谢您花时间发布它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多