使用easyexcel實現(xiàn)excel導出功能注意事項

EasyExcel

EasyExcel是一個基于Java的簡單、省內(nèi)存的讀寫Excel的開源項目。在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M的Excel。
github地址:https://github.com/alibaba/easyexcel

我的項目是需要實現(xiàn)頁面導出財務類型的excel模板,引入easyexcel的好處是,只需要在excel模板中設(shè)置好值變量后,程序代碼不許要做過多的處理,easyexcel的詳細使用方式自行參考上面的github地址即可。

注意事項

開發(fā)完成后本地測試沒有問題,部署到服務器上出現(xiàn)異常。

2022-05-12 05:08:35.237 [http-nio-8080-exec-5] ERROR o.b.g.d.c.sal.SalarySumController - easyexcel生成excel異常
com.alibaba.excel.exception.ExcelGenerateException: Create workbook failure
        at com.alibaba.excel.context.WriteContextImpl.<init>(WriteContextImpl.java:98)
        at com.alibaba.excel.write.ExcelBuilderImpl.<init>(ExcelBuilderImpl.java:36)
        at com.alibaba.excel.ExcelWriter.<init>(ExcelWriter.java:39)
        at com.alibaba.excel.write.builder.ExcelWriterBuilder.build(ExcelWriterBuilder.java:104)
        at com.alibaba.excel.write.builder.ExcelWriterBuilder$build$0.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
        at org.bmsoft.gb.dynamicsearch.controller.sal.SalarySumController.download(SalarySumController.groovy:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
        at org.springf

提示創(chuàng)建excel失敗。原因是服務器上沒有中文環(huán)境。

安裝字體環(huán)境

虛擬機安裝字體

如果程序是部署到虛擬器中以jar包形式啟動請參考如下鏈接對虛擬機安裝字體環(huán)境:
https://blog.csdn.net/wlwlwlwl015/article/details/51482065?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1-51482065-blog-105130165.pc_relevant_baidufeatures_v6&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1-51482065-blog-105130165.pc_relevant_baidufeatures_v6&utm_relevant_index=1

docker環(huán)境安裝字體

如果程序是以docker容器方式部署請檢查所依賴的基礎(chǔ)環(huán)境是否包含字體環(huán)境:

# 進入容器
docker exec xxx sh
# 進入/usr/share/文件夾下,看是否包含fonts文件夾
cd /usr/share/

我的項目是基礎(chǔ)openjdk:8-jdk-alpine版本構(gòu)建的,alpine版本的鏡像就是不包含字體環(huán)境的。所以需要我們在這個鏡像的基礎(chǔ)上增加字體,然后重新構(gòu)建出一個帶有字體環(huán)境的鏡像。
此步驟參考鏈接:
https://blog.csdn.net/qq_38225558/article/details/120379123
注意:構(gòu)建時需要有網(wǎng)絡環(huán)境。
構(gòu)建成功后進入容器環(huán)境內(nèi)就可以看到/usr/share/下出現(xiàn)fonts文件夾了。

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容