NPOI 效能問題

習慣使用NPOI套件來實現Excel匯出報表的效果
當然也有EPPlus等等的套件,但因EPPlus新版有商業用問題,故還是使用老牌NPOI套件

分享NPOI使用上的幾個問題

  1. 欄位寬度自適應AutoSizeColumn
  2. 記憶體未釋放
  3. 筆數大,匯出無法快

欄位寬度自適應AutoSizeColumn

因為中文關係,導致於匯出七萬筆左右的資料約需要兩分多鐘
改成SetColumnWidth針對每一行最大長度去做重新調整,僅需10秒

記憶體未釋放

使用XSSFWorkbook產出報表,當資料筆數大於千筆以上請考慮改用SXSSFWorkbook,否則會有記憶體占用,且未釋放問題

使用SXSSFWorkbook請注意會產生暫存檔存放資料
所以要呼叫該物件的Dispose(),才會清除暫存檔

筆數大,匯出無法快

七萬筆資料約需10秒,如果要大量匯出可以考慮產出CSV檔,匯出速度較佳

 

資料來源參考

  1. EPPlus
  2. NPOI dotnetcore