EasyExcel
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
github地址:https://github.com/alibaba/easyexcel
我的项目是需要实现页面导出财务类型的excel模板,引入easyexcel的好处是,只需要在excel模板中设置好值变量后,程序代码不许要做过多的处理,easyexcel的详细使用方式自行参考上面的github地址即可。
注意事项
开发完成后本地测试没有问题,部署到服务器上出现异常。
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
提示创建excel失败。原因是服务器上没有中文环境。
安装字体环境
虚拟机安装字体
docker环境安装字体
如果程序是以docker容器方式部署请检查所依赖的基础环境是否包含字体环境:
# 进入容器
docker exec xxx sh
# 进入/usr/share/文件夹下,看是否包含fonts文件夹
cd /usr/share/
我的项目是基础openjdk:8-jdk-alpine版本构建的,alpine版本的镜像就是不包含字体环境的。所以需要我们在这个镜像的基础上增加字体,然后重新构建出一个带有字体环境的镜像。
此步骤参考链接:
https://blog.csdn.net/qq_38225558/article/details/120379123
注意:构建时需要有网络环境。
构建成功后进入容器环境内就可以看到/usr/share/下出现fonts文件夹了。
![](https://img.haomeiwen.com/i13021638/317d10fc09386159.png)
网友评论