Буфер не может быть нулевой ошибкой при открытии файла 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:

5 ответов

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

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

Код 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 имеется много исключений, посмотрите разрешения на чтение и запись папки и файлов.

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

Можете ли вы проверить свой файл 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];

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

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

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

Вам нужно @ символ в начале вашего пути имени файла.

Пытаться

excelFileName = string.Format(@"{0}",excelFileName);
Другие вопросы по тегам