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;

/**
 * 

* 九小场所表 *

* * @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);
        }
    }

你可能感兴趣的:(excel,java)