1. 概述
在日常导出 Excel 文件时经常会遇到导出 excel 为 0kb、导出 excel 文件损坏、导出 excel 打开空白的问题,引起这个问题的原因有很多,本文梳理一些常规问题的排查方案,如下图所示:

注:11.0 中性能插件的功能被拆分并内置,相关说明请参考:性能优化插件内置说明 。
2. 常见排查步骤
2.1 检查 temp 文件夹
问题描述:temp文件满了或无temp文件夹,导出execl提示:java.io.expection:no such file or directory,导出的excel是0kb。
解决方案:检查缓存temp文件夹是否存在,如果不存在,新建temp文件,如果存在则清空文件内容。
1)windows:检查Tomcat根目录下是否有temp文件夹。
如果有,备份后清空 temp 文件夹下的内容或者更改临时文件目录(参考 Java IO 的2.3部分),重启tomat。
如果无,在tomcat根目录下新建 temp 文件夹,重启 Tomcat。
2)Linux:
缺少临时目录文件: 查看临时目录路径,检查这个目录下面有没有 poifiles 文件夹,当这个文件夹缺失的时候,会导致Excel导出0KB, 需要重启web服务器,会重新自动生成poifiles文件夹。
权限问题:非 root 用户启动 tomcat 可能无法创建临时目录和文件/tmp/poifiles,需要修改文件或目录所属的用户或用户组。
2.2 磁盘空间不足
问题描述:catalina.log日志中出现如下报错:because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
解决方案:清理磁盘空间后,再导出excel。
2.3 excel软件问题
2.3.1 因扩展名无效无法打开文件

原因分析:未安装对应版本的 excel 软件,低版本 excel 无法打开高版本文件
解决方案:安装「导出excel方式选择」插件,然后模板 web 属性选择导出成 excel2003 的。
2.3.2 试图打开文件错误

原因分析:受保护的视图/来自其他电脑,文件被锁定
解决方案:通过修改受保护的视图/来自其他电脑,勾选解除锁定。
3. 常见问题及解决方案
3.1 模板分页导出或者分页分 sheet 导出都报错, 原样导出能成功 但是文件是 0kb。
原因分析:temp临时文件目录满了或不存在
解决方案:检查缓存 temp 文件夹是否存在,如果不存在,新建temp文件,如果存在则清空文件内容。
3.2 分页导出 EXCEL 报错 No such file or directory,原样导出 EXCEL 文件 0KB。
原因分析:temp临时文件目录满了或不存在
解决方案:检查缓存 temp 文件夹是否存在,如果不存在,新建temp文件,如果存在则清空文件内容。
3.3 报错详情:Report index :1, Layer Report can not export by this way
原因分析:10.0 行式引擎插件+流式导出 excel 插件,不支持分页分 sheet 导出 excel。
解决方案:关闭插件后导出。
3.4 聚合报表导出 excel 文件损坏
原因分析:聚合报表导出报错文件损坏,报错:存在报表块或图表重叠,导出失败。
解决方案:检查模板,发现确实存在重叠,删除无用的报表块,使其不再重叠,导出正常了。
3.5 定时调度发送的邮件的附件为 0kb
原因分析:定时调度的文件处理设置配置为任务结束即清理,导致生成的附件被清理了。
解决方案:调整配置。