引入pom文件 cn.hutool hutool-all 4.6.10 org.apache.poi poi-ooxml 3.17-beta1 xerces xercesImpl 2.12.0
将excel 中的内容添加到list集合当中list泛型为object inputStream ->流
//conroller 接收参数 @RequestParam(value = “file”, required = false) MultipartFile file //获取到流 传输到 service层 InputStream inputStream = file.getInputStream();
List<List> list = new ArrayList<List>(); Excel07SaxReader reader = new Excel07SaxReader(createRowHandler(list)); reader.read(inputStream, 0);
list.for 进行自己业务逻辑代码 存表什么的
private static RowHandler createRowHandler(final List<List> list) { return new RowHandler() { public void handle(int sheetIndex, int rowIndex, List rowlist) { list.add(rowlist); } }; }
controller参数为
HttpServletResponse response, HttpServletRequest request
try { String fileName = “DeviceDownLoad.xlsx”; //excel 为放置excel模板位置文件夹名称 filePath 为打包后的地址 String filePath = getClass().getResource("/excel/" + fileName).getPath(); // 通过工具类创建writer,默认创建xls格式 ExcelWriter writer = ExcelUtil.getWriter(filePath); //设置要下载的文件的名称 response.setHeader(“content-Type”,“application/vnd.ms-excel”); response.setHeader(“Content-disposition”, “attachment;fileName=”" + URLEncoder.encode(fileName,“UTF-8”)+"""); //通知客服文件的MIME类型 response.setCharacterEncoding(“UTF-8”); ServletOutputStream out= response.getOutputStream(); writer.flush(out, true); // 关闭writer,释放内存 writer.close(); //此处记得关闭输出Servlet流 IoUtil.close(out); } catch (IOException e) { e.printStackTrace(); }
List dtos = new List(); dtos.add(); … //dtos 为自己逻辑代码之后的 list集合名称 需要导出的内容 List rows = CollUtil.newArrayList(dtos); // 通过工具类创建writer,默认创建xls格式 ExcelWriter writer = ExcelUtil.getWriter(true); //自定义标题别名 name age 对应自己实体类的属性名 writer.addHeaderAlias(“name”, “名字”); writer.addHeaderAlias(“age”, “年龄”); //自定义标题 writer.merge(10, “学生数据”); // 一次性写出内容,使用默认样式,强制输出标题 writer.write(rows, true); //设置要下载的文件的名称 response.setHeader(“content-Type”,“application/vnd.ms-excel”); //目前不支持中文名称 response.setHeader(“Content-disposition”, “attachment;fileName=”" + URLEncoder.encode(“student.xlsx”,“UTF-8”)+"""); //通知客服文件的MIME类型 response.setCharacterEncoding(“UTF-8”); ServletOutputStream out= response.getOutputStream(); writer.flush(out,true); // 关闭writer,释放内存 writer.close(); IoUtil.close(out);