ExcelLibrary和EPPlus在打开网络文件时抛出异常

本文关键字:网络 文件 抛出异常 EPPlus ExcelLibrary | 更新日期: 2023-09-27 18:30:04

我在服务器上有一个excel文件。我访问它的路径如下:"''''Server''folder''file.xlsx".

我可以从办公室用Excel API读取它,但由于我无法在服务器上安装office,我需要避免这种依赖。

我试着使用其他一些库,但它不起作用。。。

我尝试用EPPLUS打开文件,但当我尝试打开工作簿时,出现了一个异常,说"相对URI不支持此操作"。。。我试过使用ExcelLibrary,但出现了内存不足的异常。。。

//EXCELLIBRARY
Workbook book = Workbook.Load(_filename);
//EPPLUS
FileInfo file = new FileInfo(_filename);
ExcelPackage pack = new ExcelPackage(file);
ExcelWorksheet sheet = pack.Workbook.Worksheets[1];

有人知道如何解决这个问题吗?

如果没有,你还有其他图书馆可以推荐吗?我不想使用OleDB,并且已经尝试了NOPI。我想要一个只需要添加对dll的引用的库。我需要打开excel 2010文件。我还需要能够确定工作表中使用的范围,并获得一个包含值的数组。以下是我在办公室API中使用和使用的代码。

Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open(_filename, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "'t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 _range = (System.Array)xlWorkSheet.UsedRange.Value2;
 _headers = GetHeaders(_range);
 _lastRow = xlWorkSheet.Cells.Find("*", misValue, misValue, misValue, Excel.XlSearchOrder.xlByRows,
 Excel.XlSearchDirection.xlPrevious, false, misValue, misValue).Row;
 xlWorkBook.Close(false, misValue, misValue);
 xlApp.Quit();

ExcelLibrary和EPPlus在打开网络文件时抛出异常

经过一整天的搜索和尝试,我终于找到了一个有效的库Koogra。

http://sourceforge.net/projects/koogra/?_test=b

Workbook wb = new Workbook(_filename);
_worksheet = wb.GetWorksheet(0);
//You can do the same to find LastCol, LastRow or FirstCol
uint firstRow = _worksheet.CellMap.FirstRow
string aHeader = (string)_worksheet.GetRow(firstRow).GetCell(3);

这不是网络路径的样子。它应该是类似的东西

''server'path'to'file'image.jpg

请注意开头的双斜杠。只有一个斜线,它就变成了相对于当前驱动器的路径(这就是错误告诉你的)。

在我看来,FileInfo构造函数正在抛出该异常,你确定EEPlus正在抛出它吗?因为在NT家族上,FileInfo构造函数正在调用Path.NormalizeSlow,而该方法正在引发异常:

throw new ArgumentException(Environment.GetResourceString("Argument_PathUriFormatNotSupported"));

尝试使用新的Epplus库4.1

在这个版本中修复了大多数错误