61

我正在尝试使用 ExcelDataReader 在 Ubuntu 上读取 .xls 文件。我正在使用带有 C# 的 VS Code。这是代码:

var stream = File.Open(filePath, mode: FileMode.Open, access: FileAccess.Read);
var reader = ExcelReaderFactory.CreateReader(stream);

我也试过这个:

var reader = ExcelDataReader.ExcelReaderFactory.CreateBinaryReader(stream);

当我运行时,我收到以下异常:

未处理的异常:System.NotSupportedException:没有数据可用于编码 1252。有关定义自定义编码的信息,请参阅 Encoding.RegisterProvider 方法的文档。在 System.Text.Encoding.GetEncoding(Int32 代码页)

我已经安装了libmono-i18n-west4.0-cil(也试过了libmono-i18n4.0-all),因为我发现有人推荐这个,但问题仍然存在。也安装包System.Text.Encoding.CodePages没有成功。

任何人都可以帮助解决这个问题吗?

4

1 回答 1

182

我在 .net Core 应用程序中遇到了同样的问题。我添加了System.Text.Encoding.CodePagesnuget 包并注册了编码提供程序,然后才ExcelReaderFactory.CreateReader(stream)解决了这个问题。

System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
//open file and returns as Stream
using (var stream = File.Open(fileName, FileMode.Open, FileAccess.Read))
{
      using (var reader = ExcelReaderFactory.CreateReader(stream))
      {
      }
}
于 2018-04-06T21:30:40.833 回答