我有一個基本的winforms應用程序,用戶可以上傳Excel文件(.xlsx),我想讀取這個文件的內容,所以我使用EPPlus。加載大量的excel數據與EPPlus
問題是,我想加載一個非常大的excel文件的內容,它有7個選項卡,其中一個選項卡具有多於200k行,另一個選項卡具有70k。其他5個總共約50k。 (最終目標)由於我想導入數據,讀取數據,並且根據我有的規則/數據,我需要將數據寫回到Excel中文件並將其導出。
雖然在EPPlus中實現數據加載,但我遇到了問題。
這裏是代碼
var file = new FileInfo(filePath);
using (var package = new ExcelPackage(file))
{
try
{
// Get the work book in the file
ExcelWorkbook workBook = package.Workbook; //Hangs here for about 2 mins
if (workBook != null)
{
if (workBook.Worksheets.Count > 0)
{
// Get the first worksheet
ExcelWorksheet currentWorksheet = workBook.Worksheets.First();
// gets the currentWorksheet but doesn't evaluate anything...
}
}
}
catch (Exception ex)
{
throw ex;
}
}
代碼掛在package.workbook線大致2分鐘。然後它進入如果獲得currentWorkSheet的地方,並且如果我查看手錶中的該變量的內容,則由於它顯示了以下內容,因此沒有任何內容被真正加載:
功能評估被禁用,因爲之前的功能評估超時。您必須繼續執行才能重新啓用功能評估。
我從EPPlus看了link,它顯示加載大文件時唯一的問題是從上到下和從左到右的負載,他們說5000多。我有更多的方式,所以我只是想知道EPPlus是否可以做到這一點?
此外,我已經做了一些谷歌搜索和大多數的問題是,他們可以在本地,他們無法打開服務器上的大型Excel文件...
我也開始看的Open XML SDK,它似乎要更好地表現明智,但也更難以使用代碼明智。
它永遠不會讓我驚訝爲什麼人們想使用Excel,就好像它是一個實際的數據庫..你看過MSDN的大小限制,關於Excel也有你應該考慮OpenXML難代碼明智或不..有很多工作OpenXML的例子,你只需要花點時間開始工作,並試圖獲得一些基本的東西'從一個較小的子集'開始' – MethodMan 2014-11-21 17:50:32
這不是我的工作,使用Excel。我只是拿起一個項目而已。我從來沒有使用過Excel作爲數據庫。但是,關於我的回答,使用EPPlus確實可以用於我打算使用它的目的。我只是以不恰當的方式訪問單元格。另外,我對Open XML的含義是(從我的觀點來看),與EPPlus相比,編碼看起來有點困難。再說一遍,我也不是很熟悉,所以我不知道。我是否需要走這條路,我會了解到。 – Robin 2014-11-21 18:04:48
如果您對文件的生成方式有任何控制,並且工作簿本質上是平面文件,即不涉及函數/宏/格式,只需要數據轉儲,那麼最好使用幾個單獨的.csv文件而不是帶有單獨工作簿的excel文件。否則,@DJKRAZE提出敲定OpenXML解決方案的方法就是解決這個問題的方法。 – 2014-11-21 18:06:12