个人技术分享

背景

表格看板及导出,单元格时间年是根据筛选器时间变化的

较往年和往年是计算单元格

思路

1.通过excel模板来把数据填入excel再数据清洗得到数据返回前端

2.数据填充,通过行+列作为key

列如:key=整体+2024+1月,根据key匹配数据填入1-12月单元格

3.要求:表格时间年是动态的;计算单元格中的计算因子为空,则计算单元格为空

把动态时间设为T

计算单元格为空则为100000(不固定,自己设置),代码等于100000替换为null,此是为了读取数据返回给前端,如果纯导出不需要

4.数据量太大,导出接口超时,异步导出且发邮件链接导出

把workbook写入到输出流中,再把输出流转换成输入流,生成文件

 
 String fileName = "文件名称.xlsx";
 ByteArrayOutputStream bos = new ByteArrayOutputStream();
 workbook.write(bos);
 byte[] barray = bos.toByteArray();
 InputStream is = new ByteArrayInputStream(barray);
 MockMultipartFile file = new MockMultipartFile(fileName,fileName,is);
 String pathName = file.getOriginalFilename();

5.文件上传到存储云中(比如:阿里云),获取链接地址,发送邮件