匯出Excel報錯

1. java.lang.NullPointerException

1.1 問題現象

儀錶板組件匯出 Excel 後,開啟 Excel 報錯:errorCode:500, errorMsg: java.lang.NullPointerException,如下圖所示:

查看 FineBI 日誌%FineBI%/logs/fanruan.log,對應的報錯如下:

java.lang.NullPointerException
at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
at sun.font.SunFontManager$2.run(SunFontManager.java:431)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.<init>(SunFontManager.java:376)
at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
at sun.reflect.GeneratedConstructorAccessor654.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:491)
at java.awt.Font.canDisplayUpTo(Font.java:2060)
at java.awt.font.TextLayout.singleFont(TextLayout.java:470)
at java.awt.font.TextLayout.<init>(TextLayout.java:531)
at com.fr.third.v2.org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:254)

1.2 原因分析

該報錯是由於 Linux 系統沒有相關 font 資源導緻,需要為系統安裝字體管理器。

1.3 解決方案

在 Linux 中執行如下命令安裝字體管理:

yum install fontconfig

如果使用 docker 製作基礎鏡像運作以下命令:

RUN yum -y install fontconfig
RUN fc-cache --forc

2. java.lang.IllegalArgumentException:The workbook already contains a sheet of this name

2.1 問題現象 

匯出 Excel,開啟 Excel 報錯如下:

image.png

2.2 原因分析

 Excel中 sheet 命名有如下規則:

1)sheet 名稱不能多於31個(包含英文、漢字、| 、()等,但是不能包含: 、/、?、*、[]等 ),程式中使用 poi 工具來生成的時候,傳進去大於 31 個長度的字串時,會被自動截取,便會導緻兩個名稱變為一樣的,出現sheet同名異常

2)sheet 名稱不能為空,為空也會報錯。

2.3 解決方案

修改組件名稱以及對應的長度,使其符合excel命名規則。

3. Could not initialize class sun.awt.X11GraphicsEnvironment

3.1 問題現象

Linux 環境下匯出 Excel 失敗,查看日誌或按 F12 進入控制檯,出現報錯:Could not initialize class sun.awt.X11GraphicsEnvironment

3.2  原因分析

在Linux下,儀錶板匯出 Excel 時,會用到 Java 的圖片包來處理圖片。而 Java 虛擬機在處理圖片時需要本地的 x-server 支援,若是沒有就會出現該報錯。

3.3 解決方法

3.3.1 直接安裝的 FineBI

在路徑 %FineBI5.1%\bin 下找到finebi.vmoption檔案,在檔案內新增-Djava.awt.headless=true儲存檔案。如下圖所示:

3.3.2 部署到 Tomcat 的 FineBI

進入%Tomcat%/bin目錄,找到並編輯配置檔案catalina.sh,增加-Djava.awt.headless=true參數,詳情請參見:匯出 Excel 設定

4. com.finebi.common.exception.execute.FineOutOfMaxRowException: out of row restriction: xxxxxxx

4.1 問題現象

匯出 Excel,開啟 Excel 報錯如下:

4.2 原因分析

匯出的 Excel 資料量超過資料量限制。

4.3 解決方案

透過篩選等方式減少匯出資料量。

5. 資料量超過限制:Export Column Out Of Limit!

5.1 問題現象

儀錶板匯出 Excel 時報錯資料量超過限制:超過100欄無法匯出,請聯系管理者,如下圖所示:

5.2 原因分析

匯出欄數超過100欄。

5.3 解決方法

在工程配置庫 finedb 的 fine_conf_entity 表中新增一個參數

  • id為:SystemOptimizationConfig.crossExportColumnLimit

  • value為:數值,不建議將數值修改很大。


附件列表


主题: 製作視覺化組件
已经是第一篇
已经是最后一篇
  • 有帮助
  • 没帮助
  • 只是浏览
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙