1

我正在使用 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:

在此处输入图像描述

4

5 回答 5

3

正如@pomster 指出的那样,这里大多数时候的问题是:

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

于 2015-12-09T16:51:08.373 回答
1

VB.NET Code:

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

Look for folder's permission.

When System.IO library has many Exceptions, look read/write folder's and files permission.

于 2015-01-07T20:26:43.220 回答
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];
于 2014-05-26T11:54:10.690 回答
0

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

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

如果它过载,那么您必须向库作者寻求帮助(它看起来像一个错误)。

于 2014-05-26T11:39:35.133 回答
-1

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

尝试

excelFileName = string.Format(@"{0}",excelFileName);
于 2016-02-22T21:29:17.743 回答