我对SpreadSheetLight有意见。当我使用SaveAs方法时,它使用大约1.2 of的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);
}
}发布于 2013-09-13 15:10:38
这可能与文件大小缓冲区有关。就像运行Excel会占用兆字节的内存,这样你就可以写一个20KB的文件,SpreadsheetLight也做类似的事情。
我们讨论的是Open XML电子表格,因此从技术上讲,整个XML文件集都保存在内存中(保存时)。例如,压缩文件时,将整个文本文件保存在内存中,然后将其压缩为一个较小的文件。这就是为什么SpreadsheetLight (和其他库)比最终的结果文件占用更多的内存。
https://stackoverflow.com/questions/18661272
复制相似问题