NPOI - загрузка файла Excel приводит к неправильной подписи локального заголовка: 0xE011CFD0 - PullRequest
0 голосов
/ 16 января 2019

Кто-нибудь знает, что может вызвать эту ошибку

'Неверная подпись локального заголовка: 0xE011CFD0'

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

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

Я использую: https://github.com/dotnetcore/NPOI

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Оставьте это на случай, если мимо пройдут другие люди.

.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; }
0 голосов
/ 16 января 2019

Хорошо, я нашел решение:

Сохранил этот файл Excel как .xlsx, но без макросов или .xlsm, и он работал

...