在 C# (.NET) 中操作 Excel:热门库概览
在现代 .NET 平台开发中,经常需要以编程方式与 Microsoft Excel 文件进行交互。这可能涉及创建报告、导入数据、导出表格或自动化文档流程。在本文中,我们将介绍三种最流行的用于在 C# 中操作 Excel 的库:EPPlus、ClosedXML 和 NPOI。每个库都有其自身的特点、优势和局限性。
1. EPPlus — 用于处理 XLSX 的强大工具
EPPlus 是用于处理 Office Open XML (XLSX) 格式的最流行库之一。它提供了用于创建、读取和格式化 Excel 文档的广泛 API。从版本 5 开始,EPPlus 根据 Polyform Noncommercial 许可证(仅免费用于非商业用途)分发,但对于商业项目需要购买许可证。
主要功能:
- 完全支持单元格格式化(字体、颜色、边框、对齐)
- 处理图表、数据透视表和条件格式
- 支持公式和计算
- 处理图像和批注
- 处理大文件时的高性能
使用 EPPlus 创建 Excel 文件的示例:
using OfficeOpenXml;
class Program{ static void Main() { ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 商业用途需要许可证 using (var package = new ExcelPackage()) { var worksheet = package.Workbook.Worksheets.Add("报告"); // 填充标题 worksheet.Cells["A1"].Value = "姓名"; worksheet.Cells["B1"].Value = "年龄"; worksheet.Cells["C1"].Value = "城市"; // 填充数据 worksheet.Cells["A2"].Value = "安娜"; worksheet.Cells["B2"].Value = 28; worksheet.Cells["C2"].Value = "莫斯科"; // 格式化 worksheet.Cells["A1:C1"].Style.Font.Bold = true; worksheet.Cells["A1:C1"].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; worksheet.Cells["A1:C1"].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightBlue); // 保存文件 package.SaveAs(new FileInfo("report.xlsx")); } }}2. ClosedXML — 简单直观的 API
ClosedXML 是一个开源库(MIT 许可证),为处理 XLSX 文件提供了便捷且简洁的接口。它基于 DocumentFormat.OpenXml 构建,但隐藏了底层 API 的复杂性。ClosedXML 非常适合快速创建报告和简单表格。
ClosedXML 的优势:
- 简单且可读性强的语法
- 完全免费用于商业用途
- 良好的样式和格式化支持
- 内置对日期和公式的支持
使用 ClosedXML 从 Excel 读取数据的示例:
using ClosedXML.Excel;
class Program{ static void Main() { using (var workbook = new XLWorkbook("data.xlsx")) { var worksheet = workbook.Worksheet(1); // 逐行读取数据 foreach (var row in worksheet.RowsUsed()) { var name = row.Cell(1).GetValue<string>(); var age = row.Cell(2).GetValue<int>(); var city = row.Cell(3).GetValue<string>(); Console.WriteLine($"{name}, {ag