Прочитайте 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);