使用hutool-poi在未安装Office或wps软件的电脑中生成Excel的xls后缀消失问题
由于项目中存在日志导出功能,会将查找的日志数据生成Excel文件并下载,在开发和测试过程中,该功能并未出现问题。
而当现场环境使用一台未安装Office或wps软件的电脑去下载日志文件时,生成的xls文件后缀消失。当安装wps软件后再下载便会出现xls后缀。
首先可以排除代码中后缀生成问题,因为是直接拼接的,而当使用Mac系统测试时,会将xls转换为xlw,这种转换是强制的。一开始分析的是,系统对于尚未安装应用程序的后缀文件,没有在默认文件列表里生成映射关系,所以会进行过滤拦截,去除后缀。这种假设是符合的,但使用百度文库或其他网盘下载上传好的xlsx文件时,后缀并没有被过滤,所以应该是类型配置中出现问题。
1.转换生成文件的编码格式都为UTF-8(并没有用)
2.修改ContentType,以下为对应关系
如果是excel97~2003,那么content-type应该设置为:application/vnd.ms-excel,
如果是excel2007以后的,那么content-type应该设置为:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
最开始代码中使用的是application/vnd.ms-excel,在修改为第二个并将后缀拼接为xlsx,下载功能终于正常,后缀不受系统过滤。
若要复现该问题是比较繁琐的,因为大部分电脑都会安装office软件,很少会用一台WindowsServer服务器来访问项目的情况,所以之前并未察觉,网上也没有该问题的解决办法,以上步骤仅供参考。
---------------------
作者:AlgoRain
原文:https://blog.csdn.net/rain_web/article/details/105665878