我有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);
}
}
最佳答案 这可能与文件大小缓冲区有关.就像运行Excel将占用兆字节的RAM只是为了你可以写一个20千字节的文件,SpreadsheetLight做了类似的事情.
我们谈论的是Open XML电子表格,所以从技术上讲,整个XML文件集都保存在内存中(节省时间).例如,在压缩文件时,将整个文本文件保存在内存中,然后将其压缩到较小的文件中.这就是为什么SpreadsheetLight(和其他库)占用的RAM比最终生成的文件多.