EasyExcel导入读取所有的sheet页

读取一个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层

    void importExcel(MultipartFile file) throws IOException;

实现层 ServiceImp层

    @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);
        }
    }
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值