使用easyExcel上傳至Linux服務器出現空指針


1.首先是報錯截圖
image

2。代碼內容

   public String writeExcel(String updateTime) {

        // 獲取文件生成路徑
        String fileName = PATH  + "/staff-vacation" + updateTime + ".xlsx";
        List<DataDTO> dataDTOS = null;
        try {
            dataDTOS = users.selectAll(updateTime);
            for (DataDTO dataDTO : dataDTOS) {
                if(null== dataDTO.getOpenid()||""== dataDTO.getOpenid()){
                    dataDTO.setOpenid("*");
                }
                if(null== dataDTO.getDeleted()||""== dataDTO.getDeleted()){
                    dataDTO.setDeleted("0");
                }
                if(null== dataDTO.getUpdateUser()||""== dataDTO.getUpdateUser()){
                    dataDTO.setUpdateUser("*");
                }
                    }
        } catch (Exception e) {
            log.error("文件轉換異常", e);
        }
        log.info("文件存儲路徑:============="+fileName);
        // 把數據庫的數據放到EXCEl表格中
        EasyExcel.write(fileName, DataDTO.class).sheet("staff_vacation").doWrite(dataDTOS);
        return fileName;

3.排錯思路
一開始出現空指針是因為數據庫里面有臟數據,解決后上傳到服務器發現問題還會存在,通過查看日志發現是從數據庫查出文件后出現的空指針,沒有對數據進行寫入Excel操作。
首先確定路徑沒問題后,在代碼中對寫入文件單獨拋異常后發現正常運行,發現就是寫入文件的問題,What!!!!寫入怎么會出錯呢,本地跑是沒問題的。經過一番百度后,確定了問題的所在:

  1. easyExcel和POI的jar包不兼容

Easyexcel的使用,選對版本很重要,不然會報錯。官方推薦的版本清單如下:
poi版本:3.17及以上
easyexcel版本:建議使用2.0.x及以上

本文的討論及代碼,基於以下版本:
poi版本:3.17
easyexcel版本:建議使用2.0.6及以上

1. EasyExcel mac或者windows下導出EXCEL正常,Linux服務器下NullPointerException
經過了解,知道是因為alpine中缺少FontConfiguration,那么就考慮安裝ttf-dejavu這個軟件。

這篇博客找到了解決辦法。

在服務器適當位置位置創建一個Dockerfile,內容為:

FROM java:8-jre-alpine
# Install cURL
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositories

RUN apk --update add curl bash ttf-dejavu && \
      rm -rf /var/cache/apk/*

在同一位置執行:

docker build -t docker.io/java-font:8-jre-alpine .

執行完畢后會有一個新的java的鏡像:

REPOSITORY   IMAGE ID            CREATED             SIZE

docker.io/java-font 8-jre-alpine        dc7703ec6f07        31 hours ago        131.5 MB

再次構建項目的時候使用新的jdk鏡像即可解決問題。


免責聲明!

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



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