SpringBoot整合EasyExcel实现表格导出操作
SpringBoot整合EasyExcel实现表格导出操作
1.导入Maven依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency>
2.创建一个与需要导入Excel文件头字段对应的实体类(index是字段所在列数)
@Data public class ExcelData{ @ExcelProperty(value="水库名",index=0) private String name; @ExcelProperty(value="水库分类名",index=1) private String categoryName; @ExcelProperty(value="面积",index=2) private Float area; @ExcelProperty(value="水库容积",index=3) private Float volume; @ExcelProperty(value="流域",index=4) private Float flows; @ExcelProperty(value="地理位置",index=5) private String location; @ExcelProperty(value="文件地址",index=6) private String file; }
3.编写业务
//================================业务导出================== @Override public void exportExcel(HttpServletResponse response) { List<Reser> selectList = reserMapper.selectList(null); List<ExcelData> exceldata = new ArrayList<>(); selectList.stream().forEach(item -> { ExcelData newOne = new ExcelData(); BeanUtils.copyProperties(item, newOne,"id"); Category category = categoryMapper.selectById(item.getCategoryId()); newOne.setCategoryName(category.getName()); exceldata.add(newOne); }); try { //设置响应格式 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); String fileName =URLEncoder.encode("水库信息表","UTF-8"); response.setHeader("Content-Disposition", "attachment;filename="+fileName+".xlsx"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } try { //核心 sheet是定义excel 下栏sheet的名称 EasyExcel.write(response.getOutputStream(),ExcelData.class).sheet("模板").doWrite(exceldata); } catch (IOException e) { e.printStackTrace(); } }
上一篇:
JS实现多线程数据分片下载