【原創】關於高版本poi autoSizeColumn方法異常的情況


之前使用的3.9版本,autoSizeColumn方法一切正常,現在切換到了3.15版本這個方法就出先了問題,問題如下,無法自動追蹤所有的列。

Exception in thread "main" java.lang.IllegalStateException: Could not auto-size column. Make sure the column was tracked prior to auto-sizing the column.
    at org.apache.poi.xssf.streaming.SXSSFSheet.autoSizeColumn(SXSSFSheet.java:1606)
    at org.apache.poi.xssf.streaming.SXSSFSheet.autoSizeColumn(SXSSFSheet.java:1560)
    at com.thinkgem.jeesite.common.utils.excel.ExportExcel.initialize(ExportExcel.java:224)
    at com.thinkgem.jeesite.common.utils.excel.ExportExcel.<init>(ExportExcel.java:181)
    at com.thinkgem.jeesite.common.utils.excel.ExportExcel.main(ExportExcel.java:474)
Caused by: java.lang.IllegalStateException: Cannot get best fit column width on untracked column 0. Either explicitly track the column or track all columns.
    at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.getBestFitColumnWidth(AutoSizeColumnTracker.java:278)
    at org.apache.poi.xssf.streaming.SXSSFSheet.autoSizeColumn(SXSSFSheet.java:1603)
    ... 4 more
Caused by: java.lang.IllegalStateException: Column was never explicitly tracked and isAllColumnsTracked() is false (trackAllColumns() was never called or untrackAllColumns() was called after trackAllColumns() was called).
    at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.getBestFitColumnWidth(AutoSizeColumnTracker.java:275)
    ... 5 more

解決如下:

  1.之前使用的是sheet接口,改為SXSSFSheet

  2.在autoSizeColumn前使用sheet.trackAllColumnsForAutoSizing();,手動設置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM