打开excel文件时缓冲区不能为空错误?

时间:2014-05-26 11:29:40

标签: c# excel buffer excellibrary

我正在使用excel Library打开电子表格并阅读其内容,我在互操作库上使用此库,因为互操作库会导致我希望主持的服务器上的问题。

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];

运行代码时,您可以看到文件流加载:

enter image description here

当我走到下一行时,我得到了例外。缓冲区不能为空。

enter image description here

异常后,流阅读器变为canRead false:

enter image description here

5 个答案:

答案 0 :(得分:1)

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库有许多例外时,请查看读/写文件夹和文件权限。

答案 1 :(得分:1)

正如“pornster”所指出的,这里的问题大部分时间都是:

  

XLS文件的类型为“5.0 / 95”而不是“97-2003”

答案 2 :(得分:0)

您必须指定文件名,而不是流式传输到方法Workbook.Load,请参见自己link中的示例:

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

如果它有重载,那么你必须向图书馆作者寻求帮助(看起来像一个bug)。

答案 3 :(得分:0)

我刚创建了一个简单的程序而且我没有得到这个例外,

你能检查一下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];

答案 4 :(得分:-1)

您需要路径文件名前面的@符号。

尝试

excelFileName = string.Format(@"{0}",excelFileName);