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

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


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


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


using (var fs = File.OpenRead(path))

{

    var wb = new XSSFWorkbook(fs);

}

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


心有法竹
浏览 654回答 2
2回答

炎炎设计

留下这个以防其他人经过这里。.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();    }}您会发现两者之间存在一些差异HSSFWorkbook,XSSFWorkbook因此有时您必须为每个实现编写特定的代码,但这种情况非常罕见。我想说大约 95% 的IWorkbook接口适用于这两种实现。

holdtom

好的,我找到了解决方案:将该 Excel 文件保存为一个.xlsx但没有宏,或者.xlsm它可以工作
打开App,查看更多内容
随时随地看视频慕课网APP