[問題] 用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