美文网首页
使用easyexcel实现excel导出功能注意事项

使用easyexcel实现excel导出功能注意事项

作者: 小三哥_e3f4 | 来源:发表于2022-05-13 16:52 被阅读0次

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失败。原因是服务器上没有中文环境。

安装字体环境

虚拟机安装字体

如果程序是部署到虚拟器中以jar包形式启动请参考如下链接对虚拟机安装字体环境:
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环境安装字体

如果程序是以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文件夹了。

image.png

相关文章

网友评论

      本文标题:使用easyexcel实现excel导出功能注意事项

      本文链接:https://www.haomeiwen.com/subject/yrhuurtx.html