读取一个sheet用EasyExcel.read().sheet().doRead();
读取所有的sheet用EasyExcel.read().doReadAll();
上代码:
依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
实体要与Excel文档一一对应,可以index,下标从0开始;也可以用value,内容和Excel列保持一致
下面这个是Excel实体,我这里用的value
package com.webro.beanVo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class NineSiteExcel {
/**
* 场所负责人联系电话
*/
@ExcelProperty("场所负责人联系方式")
private String chargeSitePersonPhone;
/**
* 场所负责人名称
*/
@ExcelProperty("场所负责人姓名")
private String chargePersonName;
/**
* 所属网络
*/
@ExcelProperty("所属网格")
private String belongToNetwork;
/**
* 场所类型
*/
@ExcelProperty("场所类型")
private String siteType;
/**
* 场所所在街道
*/
@ExcelProperty("场所所在街道")
private String locationStreet;
/**
* 场所名称
*/
@ExcelProperty("场所名称")
private String locationName;
}
下面这个是数据库实体,我尝试Excel实体和数据库实体写在一个类里面,不太能行,原因不明确
package com.webro.bean;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* 九小场所表
* </p>
*
* @author hxy
* @since 2023-03-30
*/
@Data
@Accessors(chain = true)
@TableName("d_nine_site")
public class NineSite {
private static final long serialVersionUID = 1L;
private Integer id;
/**
* 场所负责人联系电话
*/
@ExcelProperty("场所负责人联系方式")
private String chargeSitePersonPhone;
/**
* 场所负责人名称
*/
@ExcelProperty("场所负责人姓名")
private String chargePersonName;
/**
* 所属网络
*/
@ExcelProperty("所属网络")
private String belongToNetwork;
/**
* 场所类型
*/
@ExcelProperty("场所类型")
private String siteType;
/**
* 场所所在街道
*/
@ExcelProperty("场所所在街道")
private String locationStreet;
/**
* 场所名称
*/
@ExcelProperty("场所名称")
private String locationName;
/**
* 类型:1生产加工企业 2小医院 3小学校 4小商店 5小餐饮场所 6小美容洗浴场所 7小旅馆
*/
private Integer type;
@TableField(fill = FieldFill.INSERT)
private String createTime;
@TableField(fill = FieldFill.UPDATE)
private String updateTime;
/**
* 逻辑删除 0未删除 1已经删除
*/
@TableField(fill = FieldFill.INSERT)
private Integer isDelete;
@TableField(exist = false)
private Integer page;
@TableField(exist = false)
private Integer size;
}
Controller层
@RequestMapping("importExcel")
public AjaxJson importExcel(MultipartFile file) {
try {
service.importExcel(file);
return AjaxJson.getSuccess();
} catch (IOException e) {
e.printStackTrace();
}
return AjaxJson.getError("系统异常");
}
Service层文章来源:https://www.toymoban.com/news/detail-598123.html
void importExcel(MultipartFile file) throws IOException;
实现层 ServiceImp层文章来源地址https://www.toymoban.com/news/detail-598123.html
@Override
public void importExcel(MultipartFile file) throws IOException {
List<NineSite> list = new ArrayList<>();
EasyExcel.read(file.getInputStream(), NineSiteExcel.class, new ReadListener() {
@Override
public void invoke(Object o, AnalysisContext analysisContext) {
//获取当前的sheet,从0️⃣开始
//获取当前的行数,Integer rowNum = analysisContext.readRowHolder().getRowIndex();//获取行数
Integer seIndex = analysisContext.readSheetHolder().getReadSheet().getSheetNo();
NineSiteExcel data = (NineSiteExcel) o;
NineSite entity = new NineSite();
BeanUtils.copyProperties(data, entity);
entity.setType(seIndex + 1);
list.add(entity);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}).doReadAll();
if (list.size() > 0) {
this.saveBatch(list);
}
}
到了这里,关于EasyExcel导入读取所有的sheet页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!