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)境
虛擬機安裝字體
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