2016-01-13 128 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工作。