使用EPPlus在.NET控制台保存Excel时遇IBM437编码不支持错误
解决EPPlus保存Excel时“IBM437 is not supported encoding name”错误
错误原因
在.NET Core/.NET 5+环境中,IBM437编码不属于默认内置的编码集合,EPPlus调用Save(string path)方法时会尝试使用该编码,因找不到对应编码提供器触发报错。
解决方案
方案一:添加编码包并注册编码提供器
- 安装NuGet包
System.Text.Encoding.CodePages - 在程序入口(比如
Main方法开头)注册编码提供器:
using System.Text; // 注册编码提供器 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
之后正常执行原有的Excel创建和保存代码即可。
方案二:改用FileStream保存文件
避免直接调用带路径参数的Save方法,改用FileStream写入文件,绕开编码依赖问题:
// 替换原有的workbook.Save(...)代码 using (var fs = new FileStream("C:/Users/user/Desktop/Freeze or Split Panes.xlsx", FileMode.Create, FileAccess.Write)) { workbook.Save(fs); }
using语句会自动释放文件流资源,避免文件占用问题。
额外检查
确认SetExcelReportHeaders和SetReportExcelData方法中没有手动指定错误的编码格式,比如写入单元格内容时不要强制使用IBM437编码。
内容的提问来源于stack exchange,提问作者Klaus
相关产品推荐
相关产品推荐

