easyExcel模版导出
在之前的文章说过easyExcel的好处,这里就不作过多解释了官方文档GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具EasyExcel(文档已经迁移) · 语雀。
·
目录
一.前言
在之前的文章说过easyExcel的好处,这里就不作过多解释了
官方文档
GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具
二. 问题描述
在开发中我们会根据客户的需求来解决问题, 由于可户的模版要求比较特殊,我们来看一下
2.1问题描述复现
模版是这样的
如图:
问题分析图:
2.2解决思路
2.2.1表结构设计
进过分析我们将数据库表设计成这样的
2.2.2规划模版
2.2.3代码设计(导出)
根据sql去查询出所有的总数,再按我们的类型进行查询出我们所需要的数据
这里的类型也比较多,跟笛卡尔积差不多吧
我们在这里要用常量的方式来定义我们的类型,这样就可以区分我们的不同类行了,再根据我们的不同类型, 调用mapper层查询语句, 将类型条见参数传进去就行了
代码:
//生产经营性
final String IS_PRODUCE_TYPE = "0";
//非生产经营性
final String NOT_IS_PRODUCE_TYPE = "1";
//道路安全事故
final String WAY_EVENT = "0";
//建筑施工事故
final String ARCHITECTURE_EVENT = "1";
//非煤矿山事故
final String COAL_EVENT = "2";
//工贸事故
final String INDUSTRY_EVENT = "3";
模版导出核心代码:
//模版位置
InputStream template = new PathMatchingResourcePatternResolver().getResource("templates/excels/事故调查首页月度事故表Excel导出模版.xlsx").getInputStream();
response.setContentType("application/octet-stream");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
response.setHeader("Content-Disposition",
"attachment;filename=" + java.net.URLEncoder.encode("事故调查首页月度事故表Excel导出模版.xlsx", "UTF-8"));
//ExcelWriter该对象用于通过POI将值写入Excel
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(template).build();
//构建excel的sheet
WriteSheet writeSheet = EasyExcel.writerSheet().build();
Map<String, Integer> fileData = new HashMap<>();
fileData.put("year", year);
fileData.put("month", month);
fileData.put("produce_type", num);
fileData.put("produce_type1", produceTypeFormData.getNum() + 1);
fileData.put("injureNumber", produceTypeFormData.getInjureNumber());
fileData.put("deathNumber", produceTypeFormData.getDeathNumber());
fileData.put("economicLoss", produceTypeFormData.getEconomicLoss());
excelWriter.fill(fileData, writeSheet);
excelWriter.finish();
关于核心代码这里就不做解释了上面都有注解的, 对于核心代码网上存在很多争议, 希望大家留言讨论, 学习百家之长, 精己之技。
看结果
由于库里没太多数据
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献3条内容
所有评论(0)