C#怎么读取Excel文件数据 C#如何使用NPOI和EPPlus操作Excel表格【教程】
优先EPPlus仅.xlsx或NPOI兼容.xls/.xlsxEPPlus需校验文件、用FileStream、预访问WorksheetsNPOI读.xls须防OLE2异常、日期用NumericCellValue25569转ListT推荐DataTable中间层。读取 Excel 时选 NPOI 还是 EPPlusEPPlus 更轻、API 更现代但只支持 .xlsxOffice 2007NPOI 同时支持 .xls 和 .xlsx但 API 繁琐、文档少、容易踩空引用。如果你的业务明确只要处理新格式 Excel优先用 EPPlus如果要兼容老系统导出的 .xls 文件只能上 NPOI。注意EPPlus 5.x 及以前免费6.x 起需商业授权MIT 协议仅限个人/非商业项目NPOI 始终完全开源Apache 2.0。用 EPPlus 读取 Excel 的最小可靠写法别直接 new ExcelPackage它默认不校验文件头遇到损坏或非 Excel 文件会抛奇怪异常。必须先检查 MIME 或扩展名再用 FileStream 构造并捕获 InvalidDataException 和 IOException。FileStream 必须以 FileMode.Open FileAccess.Read 打开不能用 File.ReadAllBytes() 加载到内存再构造 —— 大文件会 OOM读取前务必调用 package.Workbook.Worksheets.Count否则首次访问 Worksheets 可能触发延迟加载失败错误信息是模糊的 NullReferenceException单元格值要用 cell.Value?.ToString()不要直接 cell.Text —— 后者依赖格式化空单元格或数字类型可能返回空字符串using (var stream new FileStream(data.xlsx, FileMode.Open, FileAccess.Read))using (var package new ExcelPackage(stream)){ var worksheet package.Workbook.Worksheets[0]; var value worksheet.Cells[1, 1].Value?.ToString();}NPOI 读 .xls 文件时的典型崩点最常见的崩溃不是语法错而是 HSSFWorkbook 构造时抛 InvalidOperationException“The supplied file was not a valid OLE2 compound document”。这通常因为文件被 Excel 保存为“Strict Open XML”格式.xlsx 的一种变体或实际是 CSV 但后缀改成了 .xls。 幻导航网 发现优质实用网站,开启网络探索之旅