在 C# (.NET) 中操作 Excel:EPPlus 和 ClosedXML 详细指南
在现代 .NET 平台开发中,经常需要以编程方式创建、读取和编辑 Excel 电子表格。这可能涉及生成报告、从数据库导入数据、导出统计数据或自动化业务流程。在本文中,我们将介绍 C# 中用于操作 Excel 的两个最流行且功能强大的库:EPPlus 和 ClosedXML。这两个库都使用 Open XML (XLSX) 格式,并且不需要安装 Microsoft Office。
为什么要使用 Excel 库?
手动为 XLSX 格式创建 XML 文件极其繁琐且容易出错。像 EPPlus 和 ClosedXML 这样的库提供了高级 API,隐藏了操作 Open XML 的所有复杂性。它们允许您:
- 从头创建 Excel 文件,并完全控制格式。
- 从现有表格中读取数据,支持各种单元格类型。
- 编辑单元格、行、列和工作表。
- 应用样式、字体、颜色、边框和条件格式。
- 处理公式、数据透视表和图表。
- 将数据导出为 PDF(EPPlus 付费版可用)。
EPPlus 库
EPPlus 是 .NET 中最古老且功能最全面的 Excel 操作库之一。它支持 XLSX 格式的所有主要功能,包括图表、数据透视表、条件格式和 VBA 宏。从版本 5 开始,EPPlus 转向了 LGPL 许可模式,并对商业使用有额外限制(年收入低于 100 万美元的项目可免费使用)。
安装 EPPlus
可以通过 NuGet 包管理器安装该库:
Install-Package EPPlus或者通过 .NET CLI:
dotnet add package EPPlus示例:使用 EPPlus 创建简单的 Excel 文件
以下代码演示了如何创建包含标题和数据的 Excel 文件,并应用基本格式:
using OfficeOpenXml;using OfficeOpenXml.Style;using System.Drawing;
public void CreateExcelWithEPPlus(){ // 设置许可上下文(EPPlus 5+ 必需) ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (var package = new ExcelPackage()) { // 添加新工作表 var worksheet = package.Workbook.Worksheets.Add("员工");
// 标题 worksheet.Cells[1, 1].Value = "姓名"; worksheet.Cells[1, 2].Value = "职位"; worksheet.Cells[1, 3].Value = "薪资";
// 标题样式 using (var range = worksheet.Cells[1, 1, 1, 3]) { range.Style.Font.Bold = true; range.Style.Fill.PatternType = ExcelFillStyle.Solid; range.Style.Fill.BackgroundColor.SetColor(Color.LightBlue); range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; }
// 数据 worksheet.Cells[2, 1].Value = "伊万·伊万诺夫"; worksheet.Cells[2, 2].Value = "开发人员"; worksheet.Cells[2, 3].Value = 150000;
worksheet.Cells[3, 1].Value = "玛丽亚·彼得罗娃"; worksheet.Cells[3, 2].Value = "分析师"; worksheet.Cells[3, 3].Value = 120000;
// 数字格式 worksheet.Cells[2, 3, 3, 3].Style.Numberformat.Format = "#,##0";
// 自动调整列宽 worksheet.Cells[1, 1, 3, 3].AutoFitColumns();
// 保存文件 var fileInfo = new FileInfo("employees.xlsx"); package.SaveAs(fileInfo); }}ClosedXML 库
ClosedXML 是一个轻量级且完全免费的库(许可证