如何解决 SystemOutOfMemory 异常

How to solve SystemOutOfMemory Exception

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

Workbook workbook = new Workbook(fstream);

异常:

Exception of type 'System.OutOfMemoryException' was thrown.

C#代码:

string tempPath = @"C:\File_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" />

我的代码有什么问题,我该如何解决这个异常?

我无法对代码进行大量更改,因为它已经上线了。

@user3196511

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

        //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 担任支持开发人员/传播者。