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); }
读取 Excel 文件:```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注意:从 v5 开始,商业用途需授权,个人/非商业项目可免费使用。
创建 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);}
读取 Excel 文件:```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}"); } }
以下是两个库的主要差异点,帮助你根据项目需求做选择:
选择哪个库取决于你的实际场景:
基本上就这些。两个库都很成熟,掌握其基本用法能极大提升数据处理效率。根据项目需求灵活选用,才能事半功倍。
# excel
# java
# apache
# access
# 工具
# office
# stream
# c#
# 内存占用
# c#开发
# .net
相关文章:
网站制作软件有哪些,制图软件有哪些?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何快速搭建支持数据库操作的智能建站平台?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
如何在万网自助建站中设置域名及备案?
非常酷的网站设计制作软件,酷培ai教育官方网站?
开心动漫网站制作软件下载,十分开心动画为何停播?
香港网站服务器数量如何影响SEO优化效果?
如何用美橙互联一键搭建多站合一网站?
建站之星微信建站一键生成小程序+多端营销系统
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
无锡营销型网站制作公司,无锡网选车牌流程?
淘宝制作网站有哪些,淘宝网官网主页?
移民网站制作流程,怎么看加拿大移民官网?
如何在IIS中新建站点并配置端口与物理路径?
简历在线制作网站免费版,如何创建个人简历?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
模具网站制作流程,如何找模具客户?
建站之星代理如何优化在线客服效率?
图册素材网站设计制作软件,图册的导出方式有几种?
如何快速上传建站程序避免常见错误?
如何在橙子建站上传落地页?操作指南详解
建站之星如何修改网站生成路径?
建站VPS选购需注意哪些关键参数?
免费网站制作appp,免费制作app哪个平台好?
建站之星伪静态规则如何正确配置?
Android自定义控件实现温度旋转按钮效果
,交易猫的商品怎么发布到网站上去?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站三合一如何选?哪家性价比更高?
如何通过wdcp面板快速创建网站?
如何通过二级域名建站提升品牌影响力?
如何在IIS7上新建站点并设置安全权限?
如何在建站之星绑定自定义域名?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
Android使用GridView实现日历的简单功能
导航网站建站方案与优化指南:一站式高效搭建技巧解析
高端企业智能建站程序:SEO优化与响应式模板定制开发
公司网站的制作公司,企业网站制作基本流程有哪些?
电商网站制作价格怎么算,网上拍卖流程以及规则?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
家庭服务器如何搭建个人网站?
怎么将XML数据可视化 D3.js加载XML
如何快速搭建自助建站会员专属系统?
如何用wdcp快速搭建高效网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。