Прочитайте Excel, используя NPOI

Я пытаюсь прочитать excel[xls and xlsx], используя NPOI, я использую следующий код, но он дает "Невозможно прочитать весь заголовок; 27 байт прочитано; ожидается 512 байт при чтении 8-килобайтного файла xls

    byte[] byteArray = Encoding.UTF8.GetBytes(filepath);
    MemoryStream stream = new MemoryStream(byteArray);
    MemoryStream stream1 = new MemoryStream(Encoding.UTF8.GetBytes(filepath ?? ""));

    NPOI.HSSF.UserModel.HSSFWorkbook hssfwb = default(HSSFWorkbook);
    hssfwb = new NPOI.HSSF.UserModel.HSSFWorkbook(stream1);
    Sheet sheet = hssfwb.GetSheetAt(0);
    DataTable dtinputExcel = new DataTable();

Я перепробовал все возможные коды, доступные в сети для этой ошибки. Пожалуйста, объясните мне, что такое безошибочный метод, чтобы читать и превосходить [xls/xlsx] любого размера.

1 ответ

Проблема в том, что конструктор HSSFWorkbook ожидает поток, содержащий содержимое файла электронной таблицы, в то время как вы передаете его MemoryStream содержащий имя файла. Вы должны использовать FileStream чтобы прочитать файл и передать этот поток в HSSFWorkbook конструктор.

Попробуйте это так:

IWorkbook hssfwb;
using (FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read))
{
    hssfwb = new HSSFWorkbook(fs);
}

ISheet sheet = hssfwb.GetSheetAt(0);
Другие вопросы по тегам