1 现象描述:
公司要求做数据下载,同时下载的时候要求excel格式和前端配置的报表要保持一致,因此开发了新功能,增加了单元格字体,背景色,计算公式,小数位数等相应的功能。新功能上线后,偶尔报错
Excel 无法打开文件“*******.xlsx”,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
但是执行的代码一直往workbook里面写的代码一直没有报错,都是正常的,直到workbook。write(outputstream)这一行报错nullpoint。
后来经过被领导批评,自己慢慢找发现了原因
2 问题所在:
在写每一行数据的时候,循环调用了该语句。创建字体。
XSSFFont font = (XSSFFont) context.getWorkbook().createFont();
有资料显示:poi的这种字体,cellstyle等,样式信息,哪怕没有用到,只是create了,没有进行set到cell里面,他也是会存在于excel中的,所以当字体放在循环语句中时,excel就会下载失败。
需要把这些样式信息,按照列提前提取出来。放到一边。然后循环往里写。