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

时间:2019-01-16 13:58:52

标签: c# excel .net-core npoi

有人知道什么可能导致此错误

  

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

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

using (var fs = File.OpenRead(path))
{
    var wb = new XSSFWorkbook(fs);
}

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

2 个答案:

答案 0 :(得分:1)

留给别人以防万一。

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

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

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

private IWorkbook _workbook;

public NpoiExcelManager(bool useOldVersionOfExcel = false)
{
    try
    {
        UseOldVersionOfExcel = useOldVersionOfExcel;
        if (UseOldVersionOfExcel)
        {
            _workbook = new HSSFWorkbook();
        }
        else
        {
            _workbook = new XSSFWorkbook();
        }
    }
    catch (Exception)
    {
        throw;
    }
}

public bool UseOldVersionOfExcel { get; private set; }

答案 1 :(得分:0)

好的,我找到了解决方法:

将该Excel文件另存为.xlsx,但没有宏或.xlsm,并且可以正常工作