EasyExcel

DBC 1.3K 0

EasyExcel

添加插件

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>easyexcel</artifactId>
			<version>3.0.5</version>
		</dependency>

1、最简单例子——识别单列项目

温馨提示

easyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。
废话不多说,来一个简单的例子

    • 第一步:创建VO类
        • 目的:方便识别
        • import com.alibaba.excel.annotation.ExcelProperty;
          import lombok.Data;
          
          /**
           * @author DBC
           * @version 1.0
           * @date 2022-01-17 15:12
           */
          @Data
          public class IMEIExcelVO {
              //设置excel表头名称
          
              @ExcelProperty("产品条码")
              private String UPCCode;
          }
          
    • 第二步:监听类(可加各种优化操作)
      • /**
         * @author DBC
         * @version 1.0
         * @date 2022-01-17 15:21
         */
        
        
        /***
         *  监听器
         */
        public class ExcelModelListener extends AnalysisEventListener<IMEIExcelVO> {
        
        
            private  List<IMEIExcelVO> list = new ArrayList<IMEIExcelVO>();
            private static int count = 1;
            @Override
            public void invoke(IMEIExcelVO data, AnalysisContext context) {
                System.out.println("解析到一条数据:{ "+ data.toString() +" }");
                list.add(data);
            }
        
            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
                System.out.println("全部数据解析完成!");
        
            }
        
        
            public List<IMEIExcelVO> getData() {
                return list;
            }
        
        }
    •  直接一览,没有实现类,强行实现
      • Controller
        •     @PostMapping(value = "/paseUploadExcelUPCCode")
              public RespInfo paseUploadExcelUPCCode(@RequestPart("file") MultipartFile file) throws Exception {
          
                  ExcelModelListener listener = new ExcelModelListener();	// 定义的 listener
                  EasyExcel.read(file.getInputStream(), IMEIExcelVO.class, listener).sheet().headRowNumber(1).doRead();
          
                  List<IMEIExcelVO> entities = listener.getData();
                  // 处理数据
                  StringBuilder res = new StringBuilder();
                  for (int i = 0 ;i<entities.size();i++){
                      if (i == entities.size()-1){
                          res.append(entities.get(i).getUPCCode());
                      }else {
                          res.append(entities.get(i).getUPCCode()+",");
                      }
                  }
                  log.info("解析处理后的数据:"+res);
                  return  new RespInfo().ok(res);
              }
温馨提示

到这里已经全部结束了,我们看一下我们解析了什么样的Excel文件!EasyExcel插图
这要要知道,前面马赛克的地方是无所谓的,我们要的就仅仅只有VO类里面定义的那个字段,这个框架还有很多复杂操作,这里先说最简单的!

2、简单导出数据

    @GetMapping("upDate")
    public JsonData upDate() {

        List<TbUserDO> list = tbUserMapper.selectList(new QueryWrapper<TbUserDO>().like("name","D"));
        // 写法1 JDK8+
        // since: 3.0.0-beta1
        String fileName =  "C:\\Users\\dbc\\Desktop\\dbc\\simpleWrite" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(fileName, DemoData.class)
                .sheet("模板")
                .doWrite(() -> {
                    // 分页查询数据
                    return list;
                });
        return JsonData.buildSuccess();
    }

看看效果

EasyExcel插图2

发表评论 取消回复
表情 图片 链接 代码

分享