【问题标题】:EPPlus 'System.OutOfMemoryException'EPPlus 'System.OutOfMemoryException'
【发布时间】:2016-01-13 06:04:49
【问题描述】:

我正在尝试使用 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

我被困住了。任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: asp.net excel epplus


    【解决方案1】:

    您可能正在达到内存限制,因为这是一个大文件。如果您可以选择编译为 64 位,您也许可以解决问题:

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

    但是如果你只能编译到 x86,那么你可以用 epplus 做很多事情。您将不得不使用不同的库或自己构建用于 excel 的 XML 文件:

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

    【讨论】:

    • 遗憾的是,我只能编译到 x86... 还好我已经开始使用解决方法。还是谢谢!
    • 为了将来的使用,你能推荐一些我可以用于大文件的库吗?尝试了 ClosedXML,仍然没有运气。我使用 EPPlus 是因为它被许多人推荐并且用户友好,但我的大部分工作都涉及处理大型 Excel 文件。再次感谢!
    • @Aethlen 免费的都有自己的问题(即使是付费的也有)。看看这是否有帮助(恐怕我无法针对您的情况推荐任何具体内容):stackoverflow.com/questions/444522/…
    • 我想我必须在我们的服务器上安装 Excel。无论如何,谢谢!
    • 如果我的数据达到 64 位 RAM 限制怎么办?
    【解决方案2】:

    Essential XlsIO 是一个使用 .NET 加载大型 Excel 文件的选项。

    如果您符合条件(收入低于 100 万美元),整套控件可通过community license 计划免费获得(也可用于商业应用程序)。社区许可证是没有限制或水印的完整产品。

    注意:我为 Syncfusion 工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多