NPOI支持.xls和.xlsx格式,免费且无需Office;EPPlus仅支持.xlsx,功能强大但商业用途需授权。根据文件格式、许可证和功能需求选择合适工具。

在C#开发中,操作Excel文件是常见需求,比如导出报表、读取数据等。目前最流行的两个第三方库是NPOI和EPPlus。它们都功能强大、使用广泛,但各有特点。本文将介绍这两个库的基本用法,并进行对比,帮助你选择适合项目的工具。
NPOI 是 Apache POI 项目的 .NET 版本,支持读写 Excel 的两种格式:.xls(基于 HSSF)和 .xlsx(基于 XSSF)。它完全由 C# 实现,无需安装 Office 软件。
安装方式:
通过 NuGet 安装:
Install-Package NPOI
创建一个简单的 .xlsx 文件:
```csharp using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using System.IO;
var workbook = new XSSFWorkbook(); // 创建工作簿 var sheet = workbook.CreateSheet("Sheet1"); // 创建工作表
// 创建第一行 var row = sheet.CreateRow(0); row.CreateCell(0).SetCellValue("姓名"); row.CreateCell(1).SetCellValue("年龄");
// 创建第二行 row = sheet.CreateRow(1); row.CreateCell(0).SetCellValue("张三"); row.CreateCell(1).SetCellValue(25);
// 保存到文件 using (var fs = new FileStream("demo.xlsx", FileMode.Create, FileAccess.Write)) { workbook.Write(fs); }
</p>
<font color="#0066cc"><strong>读取 Excel 文件:</strong></font>
<p>
```csharp
using (var fs = new FileStream("demo.xlsx", FileMode.Open, FileAccess.Read))
{
var workbook = new XSSFWorkbook(fs);
var sheet = workbook.GetSheetAt(0);
for (int i = 0; i <= sheet.LastRowNum; i++)
{
var row = sheet.GetRow(i);
if (row != null)
{
var name = row.GetCell(0)?.ToString();
var age = row.GetCell(1)?.ToString();
Console.WriteLine($"姓名: {name}, 年龄: {age}");
}
}
}EPPlus 是一个专注于 .xlsx 格式的开源库,基于 Open XML SDK 构建。它语法更简洁,支持公式、图表、样式、数据验证等功能,适合现代 Excel 操作。
安装方式:
NuGet 包名(最新版本为 EPPlus.Core 或 EPPlus v5+):
Install-Package EPPlus
创建 Excel 文件:
```csharp using OfficeOpenXml; using System.IO;
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 必须设置
using (var package = new ExcelPackage()) { var worksheet = package.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells[1, 1].Value = "姓名";
worksheet.Cells[1, 2].Value = "年龄";
worksheet.Cells[2, 1].Value = "张三";
worksheet.Cells[2, 2].Value = 25;
// 保存
var fileBytes = package.GetAsByteArray();
File.WriteAllBytes("epplus_demo.xlsx", fileBytes);}
</p>
<font color="#0066cc"><strong>读取 Excel 文件:</strong></font>
<p>
```csharp
using (var package = new ExcelPackage(new FileInfo("epplus_demo.xlsx")))
{
var worksheet = package.Workbook.Worksheets[0];
var rowCount = worksheet.Dimension.Rows;
for (int row = 1; row <= rowCount; row++)
{
var name = worksheet.Cells[row, 1].Value?.ToString();
var age = worksheet.Cells[row, 2].Value?.ToString();
Console.WriteLine($"姓名: {name}, 年龄: {age}");
}
}以下是两个库的主要差异点,帮助你根据项目需求做选择:
选择哪个库取决于你的实际场景:
基本上就这些。两个库都很成熟,掌握其基本用法能极大提升数据处理效率。根据项目需求灵活选用,才能事半功倍。
以上就是C#如何操作Excel文件?NPOI与EPPlus两大类库使用教程与对比的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号