使用hutool-poi在未安装Office或wps软件的电脑中生成Excel的xls后缀消失问题

By | 2020年4月21日

使用hutool-poi在未安装Office或wps软件的电脑中生成Excel的xls后缀消失问题

由于项目中存在日志导出功能,会将查找的日志数据生成Excel文件并下载,在开发和测试过程中,该功能并未出现问题。

而当现场环境使用一台未安装Office或wps软件的电脑去下载日志文件时,生成的xls文件后缀消失。当安装wps软件后再下载便会出现xls后缀。

首先可以排除代码中后缀生成问题,因为是直接拼接的,而当使用Mac系统测试时,会将xls转换为xlw,这种转换是强制的。一开始分析的是,系统对于尚未安装应用程序的后缀文件,没有在默认文件列表里生成映射关系,所以会进行过滤拦截,去除后缀。这种假设是符合的,但使用百度文库或其他网盘下载上传好的xlsx文件时,后缀并没有被过滤,所以应该是类型配置中出现问题。

1.转换生成文件的编码格式都为UTF-8(并没有用)

2.修改ContentType,以下为对应关系

image-20200421193315703如果是excel97~2003,那么content-type应该设置为:application/vnd.ms-excel,

如果是excel2007以后的,那么content-type应该设置为:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

最开始代码中使用的是application/vnd.ms-excel,在修改为第二个并将后缀拼接为xlsx,下载功能终于正常,后缀不受系统过滤。

若要复现该问题是比较繁琐的,因为大部分电脑都会安装office软件,很少会用一台WindowsServer服务器来访问项目的情况,所以之前并未察觉,网上也没有该问题的解决办法,以上步骤仅供参考。

发表评论

电子邮件地址不会被公开。 必填项已用*标注