Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 经典ASP&;软件编写器内存问题_Excel_Asp Classic_Vbscript_Officewriter - Fatal编程技术网

Excel 经典ASP&;软件编写器内存问题

Excel 经典ASP&;软件编写器内存问题,excel,asp-classic,vbscript,officewriter,Excel,Asp Classic,Vbscript,Officewriter,我在经典ASP(我知道这是一个古老的配置)中使用ExcelWriter(SAExcel.dll版本1.1.0.0)生成一些非常庞大的报告(最多12000行50个单元格)。生成报告时,进程的内存使用量会增加100mb多一点,但报告完成后,它将永远不会返回到以前的使用水平。通常10-15mb(但有时高达50mb!)会被内存占用,在生成报告时,这会累积,最终导致错误发生,并阻止生成任何新报告 以下是错误: Microsoft VBScript runtime error '800a01fb' An

我在经典ASP(我知道这是一个古老的配置)中使用ExcelWriter(SAExcel.dll版本1.1.0.0)生成一些非常庞大的报告(最多12000行50个单元格)。生成报告时,进程的内存使用量会增加100mb多一点,但报告完成后,它将永远不会返回到以前的使用水平。通常10-15mb(但有时高达50mb!)会被内存占用,在生成报告时,这会累积,最终导致错误发生,并阻止生成任何新报告

以下是错误:

Microsoft VBScript runtime error  '800a01fb'  An exception occurred: 'xlw.Save' 
/report.asp, line 2947
有时,该错误是一个类似格式的不同错误,但也包含:

not enough storage is available
以下是我初始化ExcelWriter的代码:

Function RunExport()
    '--- Create spreadsheet
    Set xlw = Server.CreateObject("Softartisans.ExcelWriter")
    Set cells = xlw.Worksheets(1).Cells
“cells”对象由多个记录集中的数据填充,并使用如下创建的样式和字体对象集合进行样式设置:

    set NumStyleNormal = xlw.CreateStyle
    set ReportFont2 = xlw.CreateFont
以下代码用于清除内存中的对象,并在填充单元格后将报告发送到浏览器:

    err.clear
    '--- Save Spreadsheet File
    xlw.Save "report.xls", saOpenInExcel
    if err.number > 0 then
        response.write err.description
    end if
    xlw.Close
    Set xlw = nothing
    Set Cells = nothing
End Function

代码在保存之前将所有记录集和字典对象设置为“nothing”,因此我认为这些不会导致泄漏。ExcelWriter是否在内存中创建了某种类型的数据,而我的代码/asp垃圾收集没有正确清理?

看起来你没有遗漏任何垃圾收集,但是我为SoftArtisans(生产ExcelWriter的公司)工作,根据我们的错误跟踪,我们确实修复了v2和v3中的内存泄漏。不幸的是,这些版本几乎已经足够老了,可以投票了,现在已经不可用了(我们已经8岁了)。如果您有以下问题,请随时与我们联系: