NPOI - 加载 Excel 文件导致错误的本地标题签名:0xE011CFD0

Joe*_*lty 3 c# excel npoi .net-core

有没有人知道可能导致此错误的原因

'错误的本地头签名:0xE011CFD0'

var path = @"C:\Excel.xls";

using (var fs = File.OpenRead(path))
{
    var wb = new XSSFWorkbook(fs);
}
Run Code Online (Sandbox Code Playgroud)

我使用:https : //github.com/dotnetcore/NPOI

Jér*_*VEL 9

留下这个以防其他人经过这里。

.xls是旧的 Excel 格式。使用该格式,您应该创建一个新HSSFWorkbook实例。在XSSFWorkbook使用新.xlsx的格式。

两种类型都继承自 IWorkbook接口因此您可以围绕此接口构建代码并在运行时确定工作簿实例类型。

我创建了一个简单的 Excel 组件,这是构造函数:

private readonly bool _useOldExcelFormat;
private readonly IWorkbook _workbook;

public NpoiExcelManager(bool useOldExcelFormat = false)
{
    _useOldExcelFormat= useOldExcelFormat;
    if (_useOldExcelFormat)
    {
        _workbook = new HSSFWorkbook();
    }
    else
    {
        _workbook = new XSSFWorkbook();
    }
}
Run Code Online (Sandbox Code Playgroud)

你会发现HSSFWorkbookXSSFWorkbook因此有时您必须为每个实现编写特定的代码,但这些情况非常罕见。

我会说 95% 的IWorkbook接口适用于这两种实现。