作者gloomywind (看开了,就好过了)
看板C_Sharp
标题[问题] 用NPOI生成Sheet档时记忆体超载?
时间Fri Jul 29 21:33:49 2016
我尝试用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
然後跳出记忆体不足的讯息而中断,虽然发行出来後是可以正常执行,但想问一下有办法
处理这个问题吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.250.186.229
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1469799231.A.ED6.html
1F:→ reichs: 你要产生excel吗?试试看closedxml 这个套件 07/30 17:26
2F:→ Ammenze: 资料量是39栏*15列吗?这样超少的耶..应该是写法有问题 08/01 12:59
3F:→ Ammenze: 我猜是cellstyle设太多,同一种cellstyle只需在workbook 08/01 13:10
4F:→ Ammenze: 设定一次後(放到变数),下一个cell把变数指定到cellstyle 08/01 13:11
5F:→ Ammenze: 就好 08/01 13:11
6F:推 te426odin: IWORKSHEET也要释放 08/05 09:24
7F:推 oilcaptain: 3F正解 一直产生style会crash 改公用即可 08/12 09:57