新闻中心
C#如何操作Excel文件?NPOI与EPPlus两大类库使用教程与对比
NPOI支持.xls和.xlsx格式,免费且无需Office;EPPlus仅支持.xlsx,功能强大但商业用途需授权。根据文件格式、许可证和功能需求选择合适工具。

在C#开发中,操作Excel文件是常见需求,比如导出报表、读取数据等。目前最流行的两个第三方库是NPOI和EPPlus。它们都功能强大、使用广泛,但各有特点。本文将介绍这两个库的基本用法,并进行对比,帮助你选择适合项目的工具。
NPOI 简介与使用示例
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 简介与使用示例
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; // 必须设置
Openflow
一键极速绘图,赋能行业工作流
88
查看详情
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}");
}
}NPOI 与 EPPlus 对比
以下是两个库的主要差异点,帮助你根据项目需求做选择:
- 格式支持:NPOI 同时支持 .xls 和 .xlsx;EPPlus 只支持 .xlsx(OpenXML 格式)。
- 性能表现:对于大文件,EPPlus 通常更快,内存占用更低,尤其是处理复杂样式或公式时。
- API 设计:EPPlus 的 API 更现代、直观,如 worksheet.Cells["A1"] 支持坐标字符串;NPOI 更接近 J*a POI,略显繁琐。
- 功能丰富度:EPPlus 支持图表、透视表、条件格式、数据验证等高级功能;NPOI 功能也在持续增强,但部分高级特性支持较弱。
- 许可证限制:NPOI 完全免费(Apache 2.0);EPPlus 从 v5 起对商业项目收费(需购买许可证),非商业用途可免费使用。
- 依赖与兼容性:NPOI 无外部依赖,兼容性好;EPPlus 依赖 OpenXML SDK,在某些环境下需注意版本匹配。
如何选择?
选择哪个库取决于你的实际场景:
- 需要操作旧版 .xls 文件?选 NPOI。
- 项目为商业用途且预算有限?优先考虑 NPOI 避免授权问题。
- 只处理 .xlsx,追求开发效率和功能完整性?EPPlus 是更好选择。
- 需要导出带样式的报表、图表或复杂公式?推荐 EPPlus。
- 跨平台(.NET Core/.NET 5+)部署?两者都支持,但 EPPlus
需注意 LicenseContext 设置。
基本上就这些。两个库都很成熟,掌握其基本用法能极大提升数据处理效率。根据项目需求灵活选用,才能事半功倍。
以上就是C#如何操作Excel文件?NPOI与EPPlus两大类库使用教程与对比的详细内容,更多请关注其它相关文章!
# 操作指南
# 重庆seo快排软件排名
# seo网站结构如何优化推广
# 泉州簪花的营销推广方式
# 福州企业站seo
# 多门店如何营销推广方案
# 区块链推广网站推荐哪个
# 通化集团网站建设
# 绵阳网站建设商家
# 东莞物业seo费用标准
# 百度seo费用咨询乐云seo
# 尤其是
# 是一个
# 需注意
# 创建工作
# 操作方法
# excel
# 如何用
# 类库
# 两大
# 查询结果
# .net
# c#开发
# 内存占用
# c#
# stream
# office
# 工具
# access
# apache
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
知音漫客正版漫画平台_知音漫客官网账号登录
拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧
京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比
React列表渲染与独立状态管理:避免全局状态影响局部更新
三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】
steam官方网页快速访问 steam账号注册全流程
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略
腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址
微信网页版官方入口教程 微信网页版网页版快速登录步骤
学习通网页版官方登录 超星学习通电脑端入口指南
手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口
优化HTML表单样式:解决输入框焦点跳动与元素间距问题
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧
小米14应用无法联网原因分析_小米14网络权限修复
Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持
MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景
痛风发作了怎么办? 快速止痛和后期饮食调理
在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全
age动漫网站入口 age动漫官网直接访问入口
b站怎么删除评论_b站评论管理与删除操作
Yandex浏览器官方网页版入口 Yandex浏览器最新版官网
C++指针和引用有什么区别_C++内存管理核心概念深度解析
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
b站怎么看视频的弹幕数量_b站弹幕数量查看方法
如何在J*a中使用Locale处理多语言环境
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
必由学网页版入口 必由学官方平台直接访问
Python Socket多播通信中指定源IP地址的实践指南
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
极兔快递快件信息查询系统 极兔快递官网运单号追踪
Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
快手官方唯一登录入口 谨防山寨钓鱼网站
如何使用Go和Martini动态服务解码后的图片
J*aScript异步迭代器_j*ascript异步遍历
从J*aScript对象中精确提取指定属性的教程
抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧
Tabulator表格中精确实现日期时间排序的指南
mc.js免安装版 mc.js一键畅玩入口
在python-socketio事件处理器中安全访问Flask应用上下文
MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复
CSS Box Model与弹性按钮:维持布局稳定的动画实践
Animex动漫社网入口地址 Animex动漫社网正版在线入口
如何在 Excel Online 和 Google 表格中更改日期格式


2025-12-07
浏览次数:次
返回列表
需注意 LicenseContext 设置。