0

サーバー上にExcelファイルがあります。「\\Server\ folder\file.xlsx」のようなパスでアクセスします。

OfficeからExcelAPIで読み取ることができましたが、サーバーに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への参照を追加するだけでよいライブラリが必要です。Excel2010ファイルを開く必要があります。また、シートで使用されている範囲を特定し、値を含む配列を取得できる必要があります。これが私がOfficeAPIで使用して使用したコードです。

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();
4

4 に答える 4

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);
于 2012-04-05T13:04:06.843 に答える
0

これは、ネットワークパスがどのように見えるかではありません。それは次のようなものになるはずです

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

最初の二重スラッシュに注意してください。スラッシュが1つしかない場合は、現在のドライブを基準にしたパスになります(これがエラーの原因です)。

于 2012-04-04T15:24:41.383 に答える
0

FileInfoコンストラクターがその例外をスローしているように見えますが、EEPlusがそれをスローしていることを確認しますか?NTファミリでは、FileInfoコンストラクタがPath.NormalizeSlowを呼び出しており、そのメソッドが例外をスローしているためです。

throw new ArgumentException(Environment.GetResourceString("Argument_PathUriFormatNotSupported"));
于 2012-04-05T13:38:53.883 に答える
0

新しいEpplusライブラリ4.1を試してみてください

このバージョンではほとんどのバグが修正されています

于 2016-08-01T09:00:25.390 に答える