Spreadsheetlight ram用法

时间:2013-09-06 15:25:54

标签: c# .net-4.0 spreadsheet export-to-excel

我的SpreadSheetLight存在问题。当我使用SaveAs方法时,它使用大约1.2GB的RAM。我写了大约6k记录,输出文件只有6MB。有人有这个问题吗?

SaveAs代码在这里:

using (var stream = new MemoryStream(Templates.BudgetTemplate))
{
    using (var doc = new SLDocument(stream))
    {
        doc.SelectWorksheet("Sheet");

        var i = 2; //first line is header
        var list = new List<object>(); //list initialization from DB Collection

        foreach (var item in list)
        {
            //doc.SetCellValue stuff, from A to AN columns

            i++;
        }

        doc.SaveAs(_path);
    }
}

1 个答案:

答案 0 :(得分:2)

这可能与文件大小缓冲区有关。就像运行Excel将占用兆字节的RAM一样,你可以编写一个20千字节的文件,SpreadsheetLight会做类似的事情。

我们谈论的是Open XML电子表格,所以从技术上讲,整个XML文件集都保存在内存中(节省时间)。例如,在压缩文件时,将整个文本文件保存在内存中,然后将其压缩到较小的文件中。这就是为什么SpreadsheetLight(和其他库)占用的RAM比最终生成的文件多。