EPPlus 'System.OutOfMemoryException'

僤鯓⒐⒋嵵緔 提交于 2019-12-25 14:26:10

问题


I am trying to open a 38MB Excel File using EPPlus v4.0, I am able to pass it to the ExcelPackage variable but when I'm trying to get the workbook from that variable, it causes me a 'System.OutOfMemoryException'.

Here's my code:

    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

I'm stuck. Any help would really be appreciated. Thanks in advance.


回答1:


You are probably hitting the ram limit as that is a big file. If you have the option to compile to 64 bit you might be able to solve the problem:

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

But if you can only compile to x86 there is not a whole lot you can do with epplus. You will have to either use a different library or build the XML files for excel yourself:

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




回答2:


Essential XlsIO is an option for loading large Excel files using .NET.

The whole suite of controls is available for free (commercial applications also) through the community license program if you qualify (less than 1 million US Dollars in revenue). The community license is the full product with no limitations or watermarks.

Note: I work for Syncfusion.



来源:https://stackoverflow.com/questions/34759510/epplus-system-outofmemoryexception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!