EPPlus轻量高效,适合.xlsx格式;NPOI功能全面,兼容.xls与.xlsx,支持样式、公式及老版本。选型依需求:简单场景用EPPlus,复杂格式或兼容性要求高则选NPOI。

处理Excel文件在C#开发中很常见,EPPlus和NPOI是两个主流的开源库,各自适合不同场景:EPPlus轻量、语法简洁,适合读写.xlsx(Office 2007+)格式;NPOI功能更全,兼容.xls和.xlsx,适合需要老版本支持或复杂格式操作的项目。
EPPlus:快速上手.xlsx操作
EPPlus基于Open XML标准,不依赖Excel程序,纯托管代码,性能好。注意从v6开始需商业授权(免费版限5个工作表),推荐用v5.8.7(MIT协议)或升级到v6+并确认授权合规。
- 安装NuGet包:Install-Package EPPlus -Version 5.8.7
- 读取Excel:用ExcelPackage打开文件,通过Workbook.Worksheets[0]获取工作表,用Cells[row, col].Value读值
- 写入Excel:新建ExcelPackage,添加工作表,用Cells[row, col].Value = "xxx"赋值,最后Save()
- 注意:必须调用ExcelPackage.LicenseContext = LicenseContext.NonCommercial;(v5)或按v6要求配置授权,否则运行时报错
NPOI:兼顾.xls与.xlsx,支持样式和公式
NPOI是Java POI的.NET移植版,API稍冗长但功能扎实,尤其适合需要保留单元格样式、合并单元格、图表、密码保护或读写.xls(Excel 97-2003)的场景。
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库--SQLite,本文介绍的就是如何为你的Android应用程序创建和操作SQLite数据库。 数据库支持每个应用程序无论大小的生命线,除非你的应用程序只处理简单的数据,那么就需要一个数据库系统存储你的结构化数据,Android使用SQLite数据库,它是一个开源的、支持多操作系统的SQL数据库,在许多领域广泛使用,如Mozilla FireFox就是使用SQLite来存储配置数据的,iPhon
- 安装NuGet包:Install-Package NPOI(自动包含HSSF/xssf支持)
- 读.xls用HSSFWorkbook,读.xlsx用XSSFWorkbook;写入同理,统一用IWorkbook接口屏蔽差异
- 设置字体、边框、背景色需通过IWorkbook.CreateCellStyle()和CreateFont()链式构建,比EPPlus略繁琐但更可控
- 公式计算需调用FormulaEvaluator.EvaluateAll(),否则Cell.CellFormula只存公式文本,Cell.NumericCellValue为0
选型建议与避坑提醒
不追求兼容老版本且项目简单,优先EPPlus;需处理.xls、模板填充、样式控制或企业级报表,选NPOI。两者都不支持图表渲染、宏执行或实时Excel交互。
- EPPlus v6+在.NET 6+中需额外引用System.Drawing.Common(Windows平台默认可用,Linux/macOS需安装libgdiplus)
- NPOI读取含图片的Excel会跳过图片数据,如需提取图片得用底层ZIP流手动解析xlsx包
- 大文件(>10MB或>10万行)建议用流式读取(EPPlus的LoadFromCollection或NPOI的SXSSFWorkbook)避免内存溢出
- 中文乱码?确保源Excel编码正确,NPOI读取时不用特别处理,但导出CSV时需指定UTF-8 BOM
基本上就这些。两个库都成熟稳定,选一个上手练几次,读写Excel就不再发怵了。









