• EasyExcel导入导出,处理数据


     1.导出模块,导出中有中文文件名称,设置格式

    1. /**
    2. * 以流方式响应回给客户端,返回值类型设置成void
    3. *
    4. * @param response 输出excel表格,让用户下载
    5. */
    6. @PostMapping("/exportExcel")
    7. public void exportExcel(ZqRewardProjectContract zqRewardProjectContract,HttpServletResponse response){
    8. try {
    9. // 设置内容格式 以及 编码方式(文件指定可以修改)
    10. // response.setContentType("application/vnd.ms-excel");
    11. response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    12. response.setCharacterEncoding("utf-8");
    13. //attachment指定独立文件下载 不指定则回浏览器中直接打开
    14. // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
    15. String fileName = URLEncoder.encode("数据", "UTF-8").replaceAll("\\+", "%20");
    16. response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
    17. // response.setHeader("Content-Disposition","attachment;filename="+new String("数据.xlsx".getBytes(),"UTF-8"));
    18. //输出文件流 调用服务层方法,获取excel对象放入输出流
    19. Page page = getPage();
    20. List list = zqRewardProjectContractService.findAll(page, zqRewardProjectContract);
    21. //导出excel
    22. EasyExcel.write(response.getOutputStream(), ZqRewardProjectContract.class).sheet(0).doWrite(list);
    23. } catch (Exception e) {
    24. e.printStackTrace();
    25. }
    26. }

    2.导入,直接导入和异步导入(可以处理重复和设置参数)

    1. /**
    2. * ajax文件上传,前端传递的文件对象为file
    3. *
    4. * @param file 前端上传的excel文件
    5. * @return
    6. */
    7. @PostMapping("/importExcel")
    8. public String importExcel(MultipartFile file){
    9. //从解析器中获取excel文件流,传入到服务层进行读取处理
    10. try {
    11. EasyExcel.read(file.getInputStream(),ZqRewardProjectContract.class,new EasyExcelListener(zqRewardProjectContractService) ).sheet("表").doRead();
    12. } catch (Exception e) {
    13. e.printStackTrace();
    14. return "导入失败";
    15. }
    16. return "导入成功";
    17. }
    18. /**
    19. * ajax文件上传,前端传递的文件对象为file
    20. *
    21. * @param file 前端上传的excel文件
    22. * @return
    23. */
    24. @PostMapping("/importExcel2")
    25. public String importExcel2(MultipartFile file){
    26. //从解析器中获取excel文件流,传入到服务层进行读取处理
    27. try {
    28. // EasyExcel.read(file.getInputStream(),ZqRewardProjectContract.class,new EasyExcelListener(zqRewardProjectContractService) ).sheet("表").doRead();
    29. List list = EasyExcel.read(file.getInputStream(),ZqRewardProjectContract.class,new EasyExcelListener(zqRewardProjectContractService) ).sheet("表").doReadSync();
    30. //处理数据
    31. for (int i = 0,n = list.size(); i < n; i++) {
    32. list.get(i).set区域("县市");
    33. }
    34. zqRewardProjectContractService.saveOrUpdateBatch(list);
    35. } catch (Exception e) {
    36. e.printStackTrace();
    37. return "导入失败";
    38. }
    39. return "导入成功";
    40. }

    3.多sheet导出

     4.输出多个sheet,自定义表头 这里部分代码

     

  • 相关阅读:
    Jquery
    openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性
    人脸修复祛马赛克算法CodeFormer——C++与Python模型部署
    Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用
    MySQL是否有必要使用REPEATABLE READ事务隔离级别?
    为什么要从ArcMap转向ArcGIS Pro?
    Python数据攻略-Pandas时间序列数据处理
    中职网络安全竞赛设备-----文件上传渗透测试
    悄然兴起的“跑腿”,正在成为一个千亿市场
    nginx服务---2
  • 原文地址:https://blog.csdn.net/u010883006/article/details/127683297