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

能否使用XSLT样式表对现有Excel工作表进行数据填充与编辑

C# 实现基于样式表的Excel模板XML数据填充方案

完全可以实现,C#生态下有成熟的方案可以完成「基于现有Excel模板,通过样式表关联XML数据完成值填充」的需求,常见实现方案如下:

方案1:微软官方Open XML SDK(推荐,无依赖)

这是微软官方提供的操作Office Open XML格式(.xlsx)的库,不需要本地安装Excel,支持直接操作Excel内置样式表、绑定XML映射完成数据填充,完全保留模板原有样式。
操作步骤:

  1. 提前在Excel模板中配置好需要的样式表、XML映射规则,也可以通过代码动态配置
  2. 安装NuGet包 DocumentFormat.OpenXml
  3. 参考核心代码实现:
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Xml;

// 打开现有Excel模板,第二个参数设为true表示允许编辑
using (SpreadsheetDocument doc = SpreadsheetDocument.Open("你的模板路径.xlsx", true))
{
    WorkbookPart workbookPart = doc.WorkbookPart;
    // 获取模板内置的XML映射配置
    XmlMappingsPart xmlMappingsPart = workbookPart.XmlMappingsPart;
    
    // 加载你的源XML数据
    XmlDocument xmlData = new XmlDocument();
    xmlData.Load("你的数据源文件路径.xml");
    
    // 写入XML数据,会自动匹配映射规则填充到对应单元格,沿用模板预设样式
    using var stream = new MemoryStream();
    xmlData.Save(stream);
    stream.Position = 0;
    xmlMappingsPart.FeedData(stream);
    
    workbookPart.Workbook.Save();
}

方案2:EPPlus库(轻量,API更简洁)

EPPlus是开源的轻量Excel操作库,对样式操作、模板填充的封装更友好,不需要提前配置XML映射也能实现需求。
操作步骤:

  1. 安装NuGet包 EPPlus(注意不同版本的License规则,非商业场景可免费使用)
  2. 参考核心代码实现:
using OfficeOpenXml;
using System.Xml.Linq;

// 非商业场景需要先配置License
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

using (var package = new ExcelPackage(new FileInfo("你的模板路径.xlsx")))
{
    ExcelWorksheet worksheet = package.Workbook.Worksheets.First();
    // 加载源XML数据
    XDocument xmlDoc = XDocument.Load("你的数据源文件路径.xml");
    
    // 遍历XML节点填充到指定单元格,自动继承模板对应位置的原有样式
    worksheet.Cells["A1"].Value = xmlDoc.Descendants("对应XML节点名").FirstOrDefault()?.Value;
    
    // 如果需要批量应用预设样式,可直接调用模板中定义的命名样式
    // var targetStyle = worksheet.Workbook.Styles.NamedStyles.First(s => s.Name == "你预设的样式名");
    // worksheet.Cells["A1:A20"].StyleName = targetStyle.Name;
    
    package.SaveAs(new FileInfo("输出文件路径.xlsx"));
}

注意事项

  • 如果你使用的是旧版.xls格式的Excel模板,可替换为NPOI库实现,操作逻辑和EPPlus类似
  • 两种方案都不依赖本地安装的Office程序,服务器部署更方便
  • 建议提前在模板中把需要用到的样式定义为命名样式,后续代码直接引用样式名即可,不需要重复编写样式配置,维护成本更低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:36:01