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

C#不使用Interop实现XmlMap.Import功能导入XML生成Excel报表

实现方案

你可以使用开源库 EPPlus 实现该需求,它是基于Open XML格式的.NET Excel处理库,无需依赖Office环境,完全适配服务端生成报表的场景,且可完美识别你用Office 365制作的带XML映射的xlsx模板。

步骤1:安装依赖

首先安装NuGet包 EPPlus,推荐使用5.x及以上稳定版本。

步骤2:代码实现

对应你原Interop逻辑的替换代码如下:

using OfficeOpenXml;
using System.IO;

// EPPlus 5.0及以上版本必须显式设置许可证上下文
// 非商用场景使用NonCommercial,商用场景请遵守EPPlus许可协议设置为Commercial并购买授权
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

// 定义文件路径
var templatePath = Path.Combine(Directory.GetCurrentDirectory(), "TestTemplate.xlsx");
var xmlDataPath = Path.Combine(Directory.GetCurrentDirectory(), "TestData.xml");

// 打开模板文件
using var excelPackage = new ExcelPackage(new FileInfo(templatePath));
var workbook = excelPackage.Workbook;

// 获取第一个XML映射并导入XML数据
// 注意:EPPlus的集合索引从0开始,对应原Interop的XmlMaps[1]
var xmlMap = workbook.XmlMaps[0];
// 第二个参数为是否覆盖现有数据,和原Interop Import方法的第二个参数语义一致
var importResult = xmlMap.Import(new FileInfo(xmlDataPath), true);

// 保存报表,可输出为新文件或者直接覆盖原文件
// 直接覆盖用 excelPackage.Save();
excelPackage.SaveAs(new FileInfo(Path.Combine(Directory.GetCurrentDirectory(), "GeneratedReport.xlsx")));

注意事项

  • 该方案会完整保留你模板中预设的所有样式、格式、公式配置,仅替换XML映射对应的数据,完全符合你“模板预定义、仅更新XML生成报表”的使用流程。
  • 整个运行过程不依赖任何Office组件,可直接在服务器端部署运行。
  • 如果需要使用完全免费无商用限制的库,也可以选择NPOI,但NPOI对XML映射的原生支持较弱,需要额外手动实现XML到单元格的绑定逻辑,成本较高,优先推荐EPPlus方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:27:02