0.pom文件中使用的依赖

我用的是如下的版本,低版本的需要重写6个方法,新版的需要重写两个,新版本中其余4个转成了静态方法,不需要重写了。

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

1.导入

1.0 需求场景

将excel中的数据导入导数据库中,在导入之前,会根据校验规则每列的数据进行校验,如果一行数据校验全部成功,那么插入到数据库中,这一行数据表示导入成功;如果一行数据中有数据不符合校验规则,那么这条数据不入库,并且写入到新的excel中,在excel中加入一列,错误的原因,将excel放到云服务器的oss中。本例子中的服务结构是web层通过dubbo调用service层。

1.1准备工作

首先准备需要导出的实体对象,如下:

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;@Getter
@Setter
@EqualsAndHashCode
public class SkuItem implements Serializable {private static final long serialVersionUID = 1045701549245952199L;/*** 申请id*/@ExcelProperty(index = 0, value ="申请id")private String applicationId;/*** 商品名称*/@ExcelProperty(index = 1, value ="商品名称")private String skuName;/*** 商品id*/@ExcelProperty(index = 2, value ="商品id")private String skuNo;/*** 商品售价  BigDecimal*/@ExcelProperty(index = 3, value ="商品售价")private String skuPrice;/*** 错误原因*/private String errorReason;}

在controller层,前端传文件给服务端,服务端使用对象MultipartFile file进行接受;

并且使用下列代码解析每一行excle数据,并处理逻辑:

 EasyExcel.read(file.getInputStream(), SkuItem.class, new ReadListener<SkuItem>() {@Overridepublic void invoke(SkuItem skuItem, AnalysisContext analysisContext) {}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {}
}

如果是通过dubbo调用后面的服务,那么建议将数据放到一个list中,而不是每一行都去调用dubbo服务。每一行都去调用一次服务,会影响性能。所以在本例中,可以在解析每一行execl的时候,将数据存到一个list中,然后使用

List<List<CooperativeOrderItemDTO>> partition = Lists.partition(dtoList, 1000);

然后遍历partition ,每次去调用dubbo,这样会提升服务性能。校验可以放在service层。

2.导出

2.1准备工作

导出的实体

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;import java.io.Serializable;
import java.math.BigDecimal;/*** @Author Chuntao Yang* @Date 2021/10/29*/
@Data
public class ExcelEntity implements Serializable {private static final long serialVersionUID = -8415065232914507009L;@ExcelProperty(value = {"订单ID"})private Long id;/*** 商城订单号*/@ExcelProperty(value = {"SAAS商城订单号"})private String storeOrderNo;/*** 租户名称*/@ExcelProperty(value = {"租户名称"})private String tenantName;/*** 订单创建时间*/@ExcelProperty(value = {"下单时间"})private String orderCreateTime;}

controller层导出的时候需要的参数,HttpServletResponse response,主要是为了指定导出的一些数据格式,比如:

        String fileName = System.currentTimeMillis() + ".xlsx";response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName);response.setHeader("responseType", "blob");

然后使用如下代码进行导出:

List<ExcelEntity> list= Lists.newArrayList();
...
list.add(entity);
...
EasyExcel.write(response.getOutputStream(), ExcelEntity.class)
.sheet("entity")
.doWrite(list);

EasyExcel导入导出数据大致流程就是这样。

二、使用阿里的easyExcel进行导入导出相关推荐

  1. 阿里开源 EasyExcel(Excel导入导出 推荐使用)

    二.阿里开源 EasyExcel 使用可以直接看(点击)官方文档 github地址:(https://github.com/alibaba/easyexcel Java解析.生成Excel比较有名的框 ...

  2. 使用EasyExcel实现导入导出功能

    使用EasyExcel实现导入导出功能 一.导出 1.使用ideal新建一个maven项目,并在pom.xml文件中引入EasyExcel依赖 <!--easyexcel实现导入导出--> ...

  3. java使用EasyExcel实现导入导出几种方式(导入、模板导出、和不需要模板的导出)

    java通过EasyExcel实现导入导出(导入.模板导出.和不需要模板的导出) 此文章只是涉及到简单的导入导出 通过实体模板导入数据 无实体模板导入数据 导出数据 通过模板导出数据 使用到的mave ...

  4. EasyExcel 模板导入导出

    一.环境 1.开发工具:idea2018.1 2.jar 管理:maven 3.3.3 3.项目类型:springboot 二.pom.xml <?xml version="1.0&q ...

  5. 自从用了 EasyExcel,导入导出 Excel 更简单了!

    EasyExcel 在做excel导入导出的时候,发现项目中封装的工具类及其难用,于是去gitHub上找了一些相关的框架,最终选定了EasyExcel.之前早有听闻该框架,但是一直没有去了解,这次借此 ...

  6. SpringBoot整合easyexcel实现导入导出

    一.excel读写测试 1.导入依赖 <properties><easyexcel.version>2.2.0-beta2</easyexcel.version> ...

  7. 玩转POI、EasyExcel报表导入导出!

    POI.EasyExcel报表导出 前言 一.POI操作Excel 1.1 导入依赖包 1.2 编写测试代码: 1.3 03和07版本的区别 二.大文件写入 2.1 大文件写HSSF 2.2 大文件写 ...

  8. 使用easyExcel批量导入导出数据

    excel在工作中比较常用了,对于需要批量导入的需求,一般都是使用excel.excel导入常用poi,但是POI使用繁琐,而且对内存消耗大,这篇文章就是使用easyexcel来解析数据 场景一:将数 ...

  9. 使用VUE+SpringBoot+EasyExcel 整合导入导出demo

    导出示例: 后台: 1.引入依赖:需要引入easyExcel的依赖,但是我在使用过程中发现也是需要poi的依赖,不然会报错,就同时引入了. <dependency><groupId& ...

最新文章

  1. PHP设计模式:观察者模式
  2. IntelliJ IDEA 2020.2 EAP 5 发布:完美支持Java 15
  3. 关于“VCL已死、RAD已死”答读者问
  4. mac mysql-python 失败_MAC OS安装MySQL-python总是失败,请帮忙看看什么原因?
  5. Java基础篇:如何使用instanceof
  6. Hive中文件存储格式及大小比较测试
  7. 保护隐私型浏览器Tor发布安卓试用版
  8. opencv实现超像素分割(slic实现)
  9. 联邦学习 OR 迁移学习?联邦迁移学习不香吗
  10. python 中sample是什么_python中的sample什么意思
  11. FIT/WeFIT 开发者冯华君采访
  12. Absolute Enable Right Click Copy 简单快速解除滑鼠右键使用限制
  13. 语音控制Office,这个功能一定要体验
  14. 重复照片查找软件Duplicate Photos Sweeper Mac
  15. 移动魔百盒问题之我见
  16. html制作不均匀表格,HTML自定义JUnit报告不均匀表格对齐
  17. 【算法】958- 动图演示:彻底理解红黑树?
  18. 美术-图片建模一键生成对称模型
  19. unity实时渲染部分
  20. VB在招标代理业务中的运用-招标采购小帮手

热门文章

  1. 如何认识区分轻重缓急以及自我定位
  2. 西部数码服务器怎么导入mysql_虚拟主机怎么导入数据库
  3. python shelve模块_python之shelve模块
  4. spi通信c语言发送32字节数据,AVR单片机SPI通讯实例程序 (C - ARM - 电子发烧友网
  5. 【Windows 应用程序开发详解】四.Windows开发基本概念和相关术语(一)
  6. LIN总线协议详解5(网络管理)
  7. 饥荒联机版服务器搭建_TGP饥荒联机版专用服务器怎么搭建?专用服务器搭建方法...
  8. 图上的机器学习系列-聊聊struc2vec
  9. 题7.16:写一个函数,输人一个十六进制数,输出相应的十进制数。
  10. html怎么做一个正方形,纯 CSS 实现自适应正方形