2012-04-04 45 views
0

我在服務器上有一個excel文件。我使用如下所示的路徑訪問它:「\\ Server \ folder \ file.xlsx」。ExcelLibrary和EPPlus在打開網絡文件時拋出異常

我能夠從辦公室使用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文件。我還需要能夠確定工作表中使用的範圍是什麼,並使用這些值獲取數組。以下是我使用過的Office 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(); 

回答

2

整天搜索並嘗試很多圖書館後,我終於找到了一些可行的工具,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); 
0

這不是網絡路徑的樣子。它應該是這樣的

\\server\path\to\file\image.jpg 

注意在開始雙斜槓。只有一個斜槓就會變成相對於當前驅動器的路徑(這是錯誤告訴你的)。

+0

是的,它像那。我寫了兩個斜槓,但它只顯示一個。我編輯我的帖子,我不得不寫三個來顯示兩個... – Amaranth 2012-04-04 15:36:51

0

在我看來,那FileInfo的構造函數拋出該異常,你確定EEPlus拋出呢?因爲在NT系列的FileInfo構造呼籲Path.NormalizeSlow和方法拋出異常:

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

是的,我很確定。打電話給pack.Workbook時引發異常。我試着用庫ExcelPackage(這是EPPlus的起點)完全相同的代碼,它工作正常,但我沒有我需要檢測最後一行或最後一列的功能。 – Amaranth 2012-04-05 14:33:05

0

新Epplus庫嘗試4.1

大部分蟲子被固定在這個版本

+1

這真的是一個評論,而不是一個答案。有了更多的代表,[你將能夠發表評論](// stackoverflow.com/privileges/comment)。 – manetsus 2016-08-01 09:35:39

相關問題