EPPlus 6.1.0(.NET Core 7、C#)如何隐藏数据透视表字段列表?
解决EPPlus 6.1.0中隐藏数据透视表字段列表的问题
EPPlus 6.1.0没有直接提供隐藏数据透视表字段列表的API,但可以通过直接修改工作簿的XML结构来实现,具体操作如下:
核心思路
通过操作工作簿的XML文档,找到或创建workbookPr元素,并添加hidePivotFieldList="1"属性,这和你对比XML文件发现的变化一致。
实现代码
using OfficeOpenXml; using System.Xml; using System.IO; // 配置EPPlus许可证上下文(6.x版本必填) ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 商用场景请改为LicenseContext.Commercial using var package = new ExcelPackage(); var xmlDoc = package.Workbook.WorkbookXml; var nsManager = new XmlNamespaceManager(xmlDoc.NameTable); // 注册OpenXML表格命名空间 nsManager.AddNamespace("x", "http://schemas.openxmlformats.org/spreadsheetml/2006/main"); // 查找workbookPr节点,不存在则创建 var workbookPrNode = xmlDoc.SelectSingleNode("//x:workbookPr", nsManager); if (workbookPrNode == null) { var workbookNode = xmlDoc.SelectSingleNode("//x:workbook", nsManager); workbookPrNode = xmlDoc.CreateElement("workbookPr", "http://schemas.openxmlformats.org/spreadsheetml/2006/main"); workbookNode?.InsertBefore(workbookPrNode, workbookNode.FirstChild); } // 添加或设置hidePivotFieldList属性 var hideAttribute = xmlDoc.CreateAttribute("hidePivotFieldList"); hideAttribute.Value = "1"; workbookPrNode.Attributes?.SetNamedItem(hideAttribute); // 可选:添加defaultThemeVersion属性(和你对比发现的XML一致) var themeAttribute = xmlDoc.CreateAttribute("defaultThemeVersion"); themeAttribute.Value = "166925"; workbookPrNode.Attributes?.SetNamedItem(themeAttribute); // 保存文件 package.SaveAs(new FileInfo(@"D:\output.xlsx"));
注意事项
- 必须正确设置
LicenseContext,否则EPPlus会抛出许可证相关异常 - XML节点查找依赖正确的命名空间,不要遗漏命名空间注册
- 修改XML后务必调用
Save或SaveAs,否则修改不会写入到最终文件中
内容的提问来源于stack exchange,提问作者MHop
相关产品推荐
相关产品推荐

