ToB企服应用市场:ToB评测及商务社交产业平台

标题: EasyExcel相关 [打印本页]

作者: 何小豆儿在此    时间: 2024-7-24 07:01
标题: EasyExcel相关
1. easyexcel–100M

EasyExcel是一个基于Java的使用简单、节省内存的读写Excel的开源项目。在尽大概节省内存的环境下支持读写百M的Excel。
节省内存的原因:在剖析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个剖析
EasyExcel接纳一行一行的剖析模式,并将一行的剖析结果以观察者的模式通知处理惩罚
   通过Java代码完成对Excel的读写操作。所谓的读写理解为上传和下载
  github地点:https://github.com/alibaba/easyexcel
  官方文档:https://www.yuque.com/easyexcel/doc
  2. easyexcel写操作

   所谓的写操作,就是把Java中的类对象写入到excel表格中
  

实现步调
  1. <dependency>
  2.             <groupId>repMaven.com.alibaba</groupId>
  3.             <artifactId>easyexcel</artifactId>
  4.             <version>3.0.5</version>
  5.         </dependency>
复制代码
3. easyexcel写操作——web模式【导出】

导出:必要将数据库内里的文件以附件的形式下载到本地电脑,必要参数为response对象,返回值类型为void

  1. @Controller
  2. public class ExcelController {
  3.     @GetMapping("download")
  4.     public void download(HttpServletResponse response) throws IOException {
  5.         // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
  6.         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  7.         response.setCharacterEncoding("utf-8");
  8.         // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
  9.         String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");
  10.         response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
  11.         List<ExcelDemo> list=new ArrayList<>();
  12.         list.add(new ExcelDemo("章三",18,"男","郑州"));
  13.         list.add(new ExcelDemo("李斯",19,"男","郑州"));
  14.         list.add(new ExcelDemo("汪芜",20,"女","郑州"));
  15.         list.add(new ExcelDemo("码字",25,"男","郑州"));
  16.         EasyExcel.write(response.getOutputStream(), ExcelDemo.class).sheet("模板").doWrite(list);
  17.     }
  18. }
复制代码
也可以在controllre层仅进行调用操作,将逻辑交由service去做,即:

  1.     @ApiOperation("导出")
  2.     @GetMapping("/download")
  3.     public void exportData(HttpServletResponse response){
  4.         dictService.exportData(response);
  5.     }
复制代码

  1. @Override
  2.     public void exportData(HttpServletResponse response) {
  3.         try {
  4.             //设置相关参数
  5.             response.setContentType("application/vnd.ms-excel");
  6.             response.setCharacterEncoding("utf-8");
  7.             // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
  8.             String fileName = URLEncoder.encode("数据字典", "UTF-8");
  9.             response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");
  10.             //获取文件
  11.             List<Dict> list = this.baseMapper.selectList(null);
  12.             //转换文件
  13.             ArrayList<DictEeVo> dictEeVos = new ArrayList<>();
  14.             for (Dict dict : list) {
  15.                 DictEeVo dictEeVo = new DictEeVo();
  16.                 //转换
  17.                 BeanUtils.copyProperties(dict, dictEeVo);
  18.                 //添加
  19.                 dictEeVos.add(dictEeVo);
  20.             }
  21.             //写出
  22.               EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("数据字典").doWrite(dictEeVos);
  23.           } catch (Exception e) {
  24.               e.printStackTrace();
  25.         }
  26.     }
复制代码
测试
测试仅需答应项目,然后在前端页面写入现实的url地点即可,也可以添加按钮的点击事件进行测试
4. easyexcel读操作




5. easyexcel文件上传-web【导入】

导入:必要将本地文件插入到数据库,参数:multiparefile,返回值:“成功或失败”
   使用excel进行导入必要剖析器的共同,使用监听器对读取的文件进行操作
  剖析器:用来读取文件,并将数据插入到数据库
  
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4