ClosedXML: 简单操作 Excel 文件

B站影视 韩国电影 2025-05-25 08:32 2

摘要:在日常开发中,处理 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

相关推荐