摘要:在日常开发中,处理 Excel 数据是很多 .NET 开发者的常见任务。比如生成报表、导入导出数据或自动化办公。这些任务需要一个高效、易用的工具。
在日常开发中,处理 Excel 数据是很多 .NET 开发者的常见任务。比如生成报表、导入导出数据或自动化办公。这些任务需要一个高效、易用的工具。
今天介绍一个基于 Open XML SDK 的开源项目 —— ClosedXML。它提供了一个简单直观的 API,可以读写 Excel 2007+(.xlsx和.xlsm)文件。不需要安装 Microsoft Office,也可以在服务器端使用。虽然 Open XML SDK功能强大,但它的学习难度大,代码也复杂。ClosedXML在此基础上做了封装,提供了更简单的接口,让操作 Excel 更容易。
主要特性:• 可以读取、编辑和创建 Excel 文件。
• 不依赖 Microsoft Office。
• 提供简单易用的 Fluent API。
• 支持 .NET Framework 4.0+ 和 .NET Standard 2.0+。
• 可用于 Web 应用、控制台程序等多种场景。
PM> Install-Package ClosedXML创建一个 Excel 文件并写入数据
using(varworkbook =newXLWorkbook){
varworksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
workbook.SaveAs("HelloWorld.xlsx");
}
ClosedXML 处理大型 Excel 文件时也有不错的表现。例如:
场景
行数
列数
插入数据时间
保存时间
总内存消耗
混合类型数据
25万行
15列
1.6 秒 / 117 MiB
6.3 秒
477 MiB
纯文本数据
100万行
6.3 秒 / 402 MiB
17.1 秒
1880 MiB
即使是百万级数据,也能在几十秒内完成操作,适合后台批量处理任务。
• 字体缺失错误:如果出现找不到字体的问题,可以设置默认字体解决:
LoadOptions.DefaultGraphicEngine = newDefaultGraphicEngine("Arial");• 线程安全:目前 ClosedXML 不支持多线程并发访问同一个工作簿对象,请避免这种情况。
• Linux 支持:建议升级到 v0.97 或更高版本,这样兼容性更好。
除了主库,ClosedXML 社区还提供了一些扩展项目,方便你在不同框架中使用:
• ClosedXML.Report:模板化报告生成。
• ClosedXML.Extensions.AspNet:ASP.NET 集成。
• ClosedXML.Extensions.Mvc:MVC 应用集成。
• ClosedXML.Extensions.WebApi:Web API 支持。
来源:opendotnet