C#不依赖Excel Interop实现.xlsb文件读写的可行方案求助
可行的.xlsb格式读写实现方案
你之前尝试的ExcelDataReader、LinqToExcel均为只读类库,本身不支持写入操作,以下是完全符合「保留.xlsb格式、无需Excel Interop、保留原有宏与公式」约束的可读写方案:
方案1:ClosedXML(优先推荐)
当前最新版本已原生支持.xlsb格式的读写操作,API设计简洁友好,完全开源无商业授权风险,可完整保留原有文件的宏、公式、单元格格式、工作表结构。
使用步骤
- 安装NuGet包:
ClosedXML、ClosedXML.Excel.Binary - 示例代码:
// 加载现有.xlsb模板 using var workbook = new XLWorkbook("模板文件路径.xlsb"); // 按索引或名称获取要写入的工作表,索引从1开始 var targetSheet = workbook.Worksheet(1); // 单单元格写入 targetSheet.Cell("A1").Value = "业务数据"; targetSheet.Cell(2, 2).Value = 999.99; // 批量写入实体集合 var businessData = new List<业务模型> { new 业务模型 { 序号 = 1, 名称 = "测试1", 金额 = 100 }, new 业务模型 { 序号 = 2, 名称 = "测试2", 金额 = 200 } }; // 从第3行第1列开始插入表格 targetSheet.Cell(3, 1).InsertTable(businessData, false); // 保存文件,未修改的工作表(含宏、公式)会完整保留 workbook.SaveAs("输出文件路径.xlsb");
方案2:NPOI
NPOI 2.6及以上稳定版本已内置.xlsb格式支持,完全托管实现,资源占用极低,适合服务端高并发场景。
特点
- 无需依赖任何Office组件
- 可精准控制指定工作表的读写操作,不会改动未操作的工作表内容
- 完全开源免费,无授权限制
方案3:EPPlus
EPPlus 5及以上版本新增了.xlsb格式支持,对复杂Excel公式的兼容性更好。
注意
非商业场景可免费使用,商业用途需要购买对应授权。
通用注意事项
以上所有方案写入数据时仅会修改你指定的前2-3个工作表内容,第4、5个工作表的内置宏、公式、格式配置会完整保留,保存后的文件完全符合.xlsb格式规范,打开后宏与公式可正常触发自动计算。
内容的提问来源于stack exchange,提问作者bloggernext
相关产品推荐
相关产品推荐

