You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ClosedXML填充Excel模板时VBA与格式丢失问题求助

问题:ClosedXML处理带VBA、表格样式及数据透视表的Excel模板时的异常

需求背景

  • 在未安装Excel的服务器上,通过C#结合ClosedXML生成Excel报表
  • 操作流程:
    1. 手动创建包含表格、数据透视表(PivotTable)及格式的宏启用型Excel模板(.xlsm)
    2. 使用ClosedXML打开模板并填充表格数据
    3. 模板中的VBA代码无需在服务器端修改

代码示例

using ClosedXML.Excel;

// tpt.xlsm 是宏启用工作簿
// 包含单个工作表("tpt"):该工作表仅有表格("T_1")和关联的数据透视表("PT_report")
// 还包含VBA模块("Module1"),定义了测试宏

// 'Module1 内容
// Sub helloWorld()
//     MsgBox "hello world!"
// End Sub

using (var workbook = XLWorkbook.OpenFromTemplate("D:\\tmp\\closedXML\\tpt.xlsm"))
{
    var worksheet = workbook.Worksheets.Worksheet("tpt");
    var t_1 = worksheet.Tables.Table("T_1");
    var newData = new List<Person>(){
          new Person(23,"person 1")
        , new Person(24,"person 2")
        , new Person(25,"person 3")};

    t_1.ReplaceData(newData, propagateExtraColumns: true);

    workbook.SaveAs("D:\\tmp\\closedXML\\generatedReport.xlsm");
}
record Person(int age, string Name);

遇到的问题

  1. 生成的generatedReport.xlsm文件丢失原模板中的VBA模块
  2. 工作表"tpt"内的表格"T_1"的标准配色样式未被保留
  3. 数据透视表的条件格式丢失

使用环境

  • 模板由Microsoft 365(Version 2301, Build 16130.20394)创建
  • 代码基于.NET7、ClosedXML Version="0.101.0"开发

内容的提问来源于stack exchange,提问作者AleV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:57:10