[問題] 用NPOI生成Sheet檔時記憶體超載?

看板C_Sharp作者 (看開了,就好過了)時間8年前 (2016/07/29 21:33), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
我嘗試用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

07/30 17:26, , 1F
你要產生excel嗎?試試看closedxml 這個套件
07/30 17:26, 1F

08/01 12:59, , 2F
資料量是39欄*15列嗎?這樣超少的耶..應該是寫法有問題
08/01 12:59, 2F

08/01 13:10, , 3F
我猜是cellstyle設太多,同一種cellstyle只需在workbook
08/01 13:10, 3F

08/01 13:11, , 4F
設定一次後(放到變數),下一個cell把變數指定到cellstyle
08/01 13:11, 4F

08/01 13:11, , 5F
就好
08/01 13:11, 5F

08/05 09:24, , 6F
IWORKSHEET也要釋放
08/05 09:24, 6F

08/12 09:57, , 7F
3F正解 一直產生style會crash 改公用即可
08/12 09:57, 7F
文章代碼(AID): #1Ncri_xM (C_Sharp)