我正在尝试使用 EPPlus v4.0 打开一个38MB的Excel文件,我可以将它传递给 ExcelPackage 变量但是当我想要获取时该变量的工作簿,它会导致' 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
我被困住了。真的很感激任何帮助。提前谢谢。
答案 0 :(得分:3)
你可能正在达到ram限制,因为这是一个大文件。如果您可以选择编译为64位,则可以解决问题:
https://stackoverflow.com/a/29912563/1324284
但是如果你只能编译到x86,那么你可以用epplus做很多事情。您必须自己使用不同的库或为excel构建XML文件:
答案 1 :(得分:0)
Essential XlsIO是使用.NET加载大型Excel文件的选项。
如果符合条件(收入少于100万美元),可通过community license计划免费提供整套控件(商业应用程序)。社区许可是完整的产品,没有任何限制或水印。
注意:我为Syncfusion工作。