System.ArgumentException: ''IBM437' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. Arg_ParamName_Name'
'IBM437' はサポートされているエンコーディング名ではありません。カスタムエンコーディングの定義については、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
.NET6
の開発でExcelライブラリのEPPlus
のv4
を使用したところ、Excelをバイト配列に書き出す時点でエラーが発生した
原因
.NET Core
以降ではIBM437
エンコーディングがネイティブでサポートされていない
.NET Framework
までと.NET Core
以降の差異によるもの
解決方法
nugetでSystem.Text.Encoding.CodePages
を追加
dotnet add package System.Text.Encoding.CodePages --version 7.0.0
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
の記述を追加
using OfficeOpenXml;
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
using (var package = new ExcelPackage())
{
// do something
}
Reference