2016-01-13 132 views
0

我嘗試使用EPPlus V4.0一個38MB的Excel文件,我可以將它傳遞給ExcelPackage變量,但是當我試圖從工作簿變量,它導致我'System.OutOfMemoryException'。EPPlus「System.OutOfMemoryException的」

這裏是我的代碼:

Dim temppath = Path.GetTempPath() 
    Dim filenamestr As String = Path.GetFileNameWithoutExtension(Path.GetRandomFileName()) 

    Dim tempfilename As String = Path.Combine(temppath, filenamestr + ".xlsx") 

    fileUploadExcel.SaveAs(tempfilename) 

    Dim XLPack = New ExcelPackage(File.OpenRead(tempfilename)) 
    GC.Collect() 
    If File.Exists(tempfilename) Then 
     File.Delete(tempfilename) 
    End If 

    Dim xlWorkbook As ExcelWorkbook = XLPack.Workbook 'the error shows here 

我卡住了。任何幫助真的會被讚賞。提前致謝。

回答

3

由於這是一個很大的文件,你可能會達到內存限制。如果必須編譯成64位的選項,您可能能夠解決的問題:

https://stackoverflow.com/a/29912563/1324284

但如果你只能編譯的x86沒有了一大堆你可以做epplus。你必須要麼使用一個不同的庫或創建XML文件超越自己:

https://stackoverflow.com/a/26802061/1324284

+0

不幸的是,我只能編譯爲x86 ...我已經開始了一個解決方法。不管怎麼說,還是要謝謝你! –

+0

對於將來的使用,你能推薦任何我可以用於大文件的庫嗎?試過ClosedXML,仍然沒有運氣。我使用了EPPlus,因爲它被許多人推薦並且用戶友好,但我的大部分工作都涉及操縱大型Excel文件。再次感謝! –

+0

@Aethlen免費都有他們的問題(即使是付費的也是)。看看這是否有幫助(我不能建議任何具體的情況,我怕你):http://stackoverflow.com/questions/444522/import-and-export-excel-what-is-the-best-library?rq= 1 – Ernie

0

Essential XlsIO是加載使用.NET大型Excel文件的選項。

如果您有資格獲得(少於100萬美元的收入),整套控件可通過community license程序免費獲得(商業應用程序)。社區許可證是完整的產品,沒有任何限制或水印。

注意:我爲Syncfusion工作。