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