框架:spring cloud
测试工具:swagger
这两天,项目需要紧急上Excel导出功能,所以这两天一直加班。之前有通过POI3.9做过一个导出,但是一直存在一个问题,Excel表能下载,但是打开始终提示:
这个问题一直困扰着我,没有时间解决,所以一直放在哪里。
这次没办法了,就只能解决这个问题。
开始,我以为是我代码问题,然后找到一个同一个框架项目,把代码拿过来,写好接口,在swagger上测试,遇到另一个问题。
时用easy.poi3.1.0的jar包和POI 3.9的jar包,在运行过程中,始终抛一个错误
java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Sheet.getDrawingPatriarch()Lorg/apache/poi/ss/usermodel/Drawing;
又是各种搜索问题,最后才发现
public static Drawing getDrawingPatriarch(Sheet sheet){
if(sheet.getDrawingPatriarch() == null){
sheet.createDrawingPatriarch();
}
return sheet.getDrawingPatriarch();
}
POI3.9的sheet.getDrawingPatriarch()这个方法没有。
最后迫不得已,将POI版本降低,同时降低easy.poi的版本,解决该问题。
此问题解决,接下来就是测试啦。
因为之前测试都是时用的Swagger页面进行接口测试,成功后,将地址给前台调用。也没有什么不妥,然后通过Swagger页面调用接口,下载Excel表,打开,始终出现上面截图的信息,内容是各种乱码。
又是一通百度,google各种查询,各种设置response参数,各种设置编码,时间浪费了一天,都快崩溃了。最后在不经意间,在一个论坛上看到这么一句话
然后给了我启发,然后直接输入导出地址,回车。一切都是那么的美好。
切记:也是自己学习不精,导致问题所在。以后Swagger页面测试不行,试着换另一个方式实施。
记录自己被坑的一天。好好学习,天天向上。