Буфер не может быть нулевой ошибкой при открытии файла Excel?

Я использую библиотеку excel, чтобы открыть электронную таблицу и прочитать ее содержимое, я использую эту библиотеку поверх библиотеки взаимодействия, поскольку библиотека взаимодействия вызывает проблемы на сервере, на котором я надеюсь разместить.

https://code.google.com/p/excellibrary/

using ExcelLibrary.SpreadSheet;

Stream fileStream = System.IO.File.OpenRead(excelFileName); //FilePath
Workbook book = Workbook.Load(fileStream); //Exception thrown
Worksheet sheet = book.Worksheets[0];

При запуске кода вы можете увидеть загрузку файлового потока:

введите описание изображения здесь

Когда я перехожу к следующей строке, я получаю исключение. Буфер не может быть нулевым.

введите описание изображения здесь

После исключения средство чтения потока становится canRead false:

введите описание изображения здесь


person Pomster    schedule 26.05.2014    source источник


Ответы (5)


Как отметил @pomster, в большинстве случаев проблема заключается в следующем:

Файл XLS имеет тип 5.0 / 95 вместо 97-2003.

person pim    schedule 09.12.2015

Код VB.NET:

Public Function importSheet(fileName As String) As Boolean
  Dim fileStream = System.IO.File.OpenRead(fileName)        
  Dim book = ExcelLibrary.SpreadSheet.Workbook.Load(fileStream)
  Dim sheet = book.Worksheets(0)

  'TO DO
  Return True
End Function

Ищите разрешение папки.

Если в библиотеке System.IO много исключений, посмотрите права доступа к папкам и файлам на чтение / запись.

person Andre Mesquita    schedule 07.01.2015

Вы должны указать имя файла, а не поток в метод Workbook.Load, см. Пример в собственном ссылка:

string file = "C:\\newdoc.xls";
// open xls file
Workbook book = Workbook.Load(file);
Worksheet sheet = book.Worksheets[0];

Если для этого есть перегрузка, то вам нужно попросить помощи у автора библиотеки (похоже на ошибку).

person Sinatr    schedule 26.05.2014
comment
.Load (Путь) или .Load (поток файлов) Оба дают одну и ту же ошибку. - person Pomster; 26.05.2014

Я только что создал простую программу и не получаю этого исключения,

Вы можете проверить файл Excel? может быть он коррумпирован.

можно сделать простую программу, которая просто открывает это приложение?

string excelFileName = "";
        excelFileName = @"E:\Innovation\PAKISTAN.xls";
        Stream fileStream = System.IO.File.OpenRead(excelFileName); //FilePath
        Workbook book = Workbook.Load(fileStream); //Exception thrown
        Worksheet sheet = book.Worksheets[0];
person Muhammad Zaighum    schedule 26.05.2014
comment
Мои Excel - это рабочая книга Microsoft Excel 5.0 / 95, .xls, если я сохраню их как Microsoft Excel 97-2003, .xls, похоже, работает - person Pomster; 26.05.2014
comment
проблема уже отправлено - person Muhammad Zaighum; 26.05.2014

Вам нужен символ @ перед именем вашего пути.

Пытаться

excelFileName = string.Format(@"{0}",excelFileName);
person Bruce    schedule 22.02.2016