记录笔记,有错误下边留言
1.引入maven依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.4</version> </dependency>
2.
@RequestMapping(value = "", method = RequestMethod.POST) public void processExcelAndDownExcel(@RequestParam("file") MultipartFile file, HttpServletResponse response) { try { //获取文件的名称 String filename = file.getOriginalFilename(); //获取excelReaderBuilder ExcelReaderBuilder read = EasyExcel.read(file.getInputStream()); ExcelReaderSheetBuilder sheetBuilder = read.sheet(0); ExcelReaderSheetBuilder sheet1 = sheetBuilder.headRowNumber(0); //获取excel中所有的数据 List<Object> list = sheet1.doReadSync(); for (int i = 0; i < list.size(); i++) { //强转为map键为列索引 Map<Integer, Object> o = (Map<Integer, Object>) list.get(i); //数据处理 } response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode(filename, "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); List<?> data = data(list); EasyExcel.write(response.getOutputStream()).sheet().doWrite(data); data = null; list = null; } catch (Exception e) { logger.info(e.getMessage()); } }
/* easyexcel无模板方式封装数据 传递的参数实际泛型为一个map */ protected List<?> data(List<Object> list) { List<List<Object>> rowList = new ArrayList<>(); for (Object o : list) { List<Object> cell = new ArrayList<>(); Map<Integer, Object> map = (Map<Integer, Object>) o; Set<Integer> set = map.keySet(); for (Integer s : set) { cell.add(map.get(s)); } rowList.add(cell); } return rowList; }