作者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://www.ptt.cc/bbs/C_Sharp/M.1469799231.A.ED6.html
→ reichs: 你要產生excel嗎?試試看closedxml 這個套件 07/30 17:26
→ Ammenze: 資料量是39欄*15列嗎?這樣超少的耶..應該是寫法有問題 08/01 12:59
→ Ammenze: 我猜是cellstyle設太多,同一種cellstyle只需在workbook 08/01 13:10
→ Ammenze: 設定一次後(放到變數),下一個cell把變數指定到cellstyle 08/01 13:11
→ Ammenze: 就好 08/01 13:11
推 te426odin: IWORKSHEET也要釋放 08/05 09:24
推 oilcaptain: 3F正解 一直產生style會crash 改公用即可 08/12 09:57