导出Excel后缀名问题(后端强制修改后缀名xlsx可以打开,前端无法打开)

1.理解需求

本次需求是普通的静态表头导出,一个直接查,另一个需要计算百分率。

所以也没想太多,直接第一个查数据,第二个计算一下组装数据就开始导出了。

2.问题出现

 

 发现后缀名为exe,当时确实是愣了一下,于是我强制改成xlsx。

 

 

 发现一切正常,于是我就没改,就这样和前端进行联调了。

果不其然,该出的问题跑不了,所以下次再遇到这种情况一定要在第一时间解决掉,避免浪费更多的时间。

前端导出文件后缀名为txt,当时确实愣了一下,改为xlsx后缀后发现出错。

 

 重新测试了一下会出现undefined。当时是直接打不开。。。

在前端确认代码基本没问题的前提下,我觉得是后端代码的问题。于是在代码中查找有关于导出及后缀名的方法。

 

 response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。

原文档:https://blog.csdn.net/qq_42108192/article/details/81938674

很详细。(截取部分)

 

根据需求我们导出的是Excel文档。

所以,response.setContentType选择response.setContentType("application/vnd.ms-excel;charset=utf-8");

 

 

 这次后端先用Postman测一下,看看是否还会发生exe后缀名的情况。

 

 可以看到已经默认为xls了。

再测一下前端。发现没有出现异常情况。Bug修复。

总结:下次后端在开发的时候,发现异常情况要及时处理,即使好使,也要想一下为什么会出现这种问题。避免后续出现更多麻烦的事儿从而找不到原因。

 

posted on 2020-11-16 16:22  热爱足球的真祺怪  阅读(1945)  评论(0)    收藏  举报

导航