當前為5.1版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

导出Excel报错

1. java.lang.NullPointerException

1.1 問題現象

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

1.png

查看 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.

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保存文件。如下圖所示:

image.png

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 解決方案

通過篩選等方式減少導出數據量。

附件列表


主題: 构建图表和分析数据
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 评价文档,奖励 1 ~ 100 随机 F 豆!