[问题] 用NPOI生成Sheet档时内存超载?

楼主: gloomywind (看开了,就好过了)   2016-07-29 21:33:49
我尝试用NPOI建立一个EXCEL档,先付上程式码
public void SetEleDataXlsx()
{
IWorkbook wb = new XSSFWorkbook();
ISheet sheet1 = wb.CreateSheet("电费纪录");
ISheet sheet2 = wb.CreateSheet("用电度数年度比较");
DataSheet1(SetSheet1(wb, sheet1, 0), 0);
DataSheet1(SetSheet1(wb, sheet2, 1), 1);
FileStream file = new FileStream(@"C:\NPOI.xlsx", FileMode.Create);
wb.Write(file);
file.Close();
MessageBox.Show("输出完成");
}
我先建立了两个sheet,然后丢到SetSheet1()里面去建立整个Sheet的CellStyle,然后再
透过DataSheet1去DB抓相对应的资料进来填入Cell,但不知道是不是因为要设定的资料太
多(每个Sheet都是39*15),它在Debug模式下跑到第二个Sheet就会因为内存使用冲上2G
然后跳出内存不足的讯息而中断,虽然发行出来后是可以正常执行,但想问一下有办法
处理这个问题吗?
作者: reichs   2016-07-30 17:26:00
你要产生excel吗?试试看closedxml 这个套件
作者: Ammenze (蓝天白云)   2016-08-01 12:59:00
资料量是39栏*15列吗?这样超少的耶..应该是写法有问题我猜是cellstyle设太多,同一种cellstyle只需在workbook设定一次后(放到变量),下一个cell把变量指定到cellstyle就好
作者: te426odin (小胖老师)   2016-08-05 09:24:00
IWORKSHEET也要释放
作者: oilcaptain (柠檬爱玉)   2016-08-12 09:57:00
3F正解 一直产生style会crash 改公用即可

Links booklink

Contact Us: admin [ a t ] ucptt.com