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

我正在使用Excel库打开电子表格并阅读它的内容,我正在通过互操作库使用这个库,因为互操作库会导致我希望托pipe的服务器计算机上的问题。

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

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

在这里输入图像说明

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

在这里输入图像说明

在stream读取器变成exception之后canRead false:

在这里输入图像说明

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

正如“pornster”指出的,这里最常见的问题是:

XLS文件是“5.0 / 95”而不是“97-2003”

您必须指定文件名 ,而不是stream到方法Workbook.Load ,请参阅自己的链接中的示例:

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

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

我刚刚创build了一个简单的程序,我没有得到这个exception,

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

在path文件名前面需要@符号。

尝试

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