如何解决SystemOutOfMemory异常

时间:2017-07-04 06:46:14

标签: c# .net aspose-cells

我在我的应用程序中遇到以下异常:

Workbook workbook = new Workbook(fstream);

例外:

类型的异常' System.OutOfMemoryException'被扔了。

C#代码:

string tempPath = @"C:\File\01_TDv01.xlsx";
foreach (string templateFile in Directory.GetFiles(tempPath))
{
    using (FileStream fstream = new FileStream(templateFile, FileMode.Open))
    {                    
         Workbook workbook = new Workbook(fstream);     //getting exception here
         Worksheet worksheet = workbook.Worksheets[0];
         ArrayList List = new ArrayList();

    //other code
    }
}
catch (Exception ex)
{

}

我正在处理大小为38,436 KB的Excel文件;其中有10K行。

Web配置设置:

<add key="maxFileSizeLimit" value="2147483647" />

<httpRuntime targetFramework="4.5"  maxQueryStringLength="52768" enable="true" maxRequestLength="2147483647"/>

<requestLimits maxQueryString="52768" maxAllowedContentLength="4294967295" />

请告诉我代码中的错误以及如何解决此异常。为什么会发生这种异常?

请注意,我无法对代码进行大量更改,因为它已经存在。请通过较少的更改让我知道一些解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:0)

@ user3196511

您能否向我们提供您的模板文件&#34; 01_TDv01.xlsx&#34;。我们需要使用您的模板文件来评估您的问题。在加载大文件时,请确保您有足够的内存(例如文件大小的10倍或更多内存)可用于大过程我们还建议您尝试我们的最新版本/修复:Aspose.Cells对于.NET v17.6.x(如果您尚未使用它)。此外,您应该在加载模板文件时尝试设置MemoryPreference属性,请参阅以下示例代码供您参考: 例如 示例代码:

        //Specify the LoadOptions            
        LoadOptions opt = new LoadOptions();
        //Set the memory preferences
        opt.MemorySetting = MemorySetting.MemoryPreference;

        using (FileStream fstream = new FileStream(templateFile, FileMode.Open))
{                    
     Workbook workbook = new Workbook(fstream, opt);     //getting exception here
     Worksheet worksheet = workbook.Worksheets[0];


//other code
}

我是Aspose的支持开发人员/传播者。