excel多sheet页的导入

简介: excel多sheet页的导入

最近有个需求,导入多个sheet页的数据

excel如下:

实现方式: easyexcel完美解决

1.具体代码:

@Override
    public String importHybridFaultDict(MultipartFile file) {
        try {
            SyncReadListener listener = new SyncReadListener();
            ExcelReader excelReader = EasyExcel.read(file.getInputStream(), listener).head(HybridFaultExcelDto.class).build();
            List<ReadSheet> sheets = excelReader.excelExecutor().sheetList();
            for (int i = 0; i < sheets.size(); i++) {
                ReadSheet readSheet = sheets.get(i);
                String sheetName = readSheet.getSheetName();
                excelReader.read(readSheet);
                List<Object> list1 = listener.getList();
                logger.info("第" + (i + 1) + "页的数据: {}", JSONObject.toJSONString(list1));
                List<HybridFaultDict> list = new ArrayList<>();
                for (Object o : list1) {
                    HybridFaultExcelDto  entity = (HybridFaultExcelDto) o;
                    HybridFaultDict hybridFaultDict = new HybridFaultDict();
                    hybridFaultDict.setFaultCode(entity.getFaultCode());
                    hybridFaultDict.setFaultName(entity.getFaultName());
                    hybridFaultDict.setProject("W3");
                    hybridFaultDict.setControl(sheetName);
                    list.add(hybridFaultDict);
                }
                this.saveBatch(list);
                // 清空之前的数据
                listener.getList().clear();
                list.clear();
            }
        } catch (Exception e) {
            logger.error("读取数据,报错了");
        }
        return "导入混动字典成功";
    }

easyexcel实体映射类:

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
 * @description:混动故障码导入
 * @author:hfl
 * @date:Created in 2020/05/18
 */
@Data
public class HybridFaultExcelDto {
    /**
     * 故障码
     */
    @ExcelProperty(value = "故障代码")
    private Integer faultCode;
    @ExcelProperty(value = "故障描述")
    private String faultName;
}

数据库实体映射类

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
 * 混动故障码
 * 
 * @author hfl
 * @date 2022-03-08 15:06:32
 */
@Data
@TableName("hybrid_fault_dict")
public class HybridFaultDict extends BaseEntity {
  /**
   * 主键
   */
  @TableId
  private String faultId;
  /**
   * 项目
   */
  private String project;
  /**
   * 控制器名称
   */
  private String control;
  /**
   * 故障码
   */
  private Integer faultCode;
  /**
   * 故障名称
   */
  private String faultName;
}

2.需要的jar包

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

备注 :

this.saveBatch(list); 使用的是mybatis-plus框架自带的批量保存。


效果

可以看到数据库中都被保存进来了。


大功告成!!

相关文章
|
6月前
|
easyexcel
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
|
6月前
|
SQL 缓存 easyexcel
面试官问10W 行级别数据的 Excel 导入如何10秒处理
面试官问10W 行级别数据的 Excel 导入如何10秒处理
270 0
|
5月前
|
SQL 存储 数据库
excel导入sql数据库
将Excel数据导入SQL数据库是一个相对常见的任务,可以通过多种方法来实现。以下是一些常用的方法: ### 使用SQL Server Management Studio (SSMS) 1
|
2月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
2月前
|
Python
pandas 生成 Excel 时的 sheet 问题
pandas 生成 Excel 时的 sheet 问题
35 1
|
2月前
|
Python
Python:Pandas实现批量删除Excel中的sheet
Python:Pandas实现批量删除Excel中的sheet
116 0
|
3月前
|
关系型数据库 MySQL Windows
MySQL数据导入:MySQL 导入 Excel 文件.md
MySQL数据导入:MySQL 导入 Excel 文件.md
|
4月前
|
存储 关系型数据库 MySQL
Excel 导入 sql3
【7月更文挑战第18天】
46 2
|
3月前
|
前端开发 easyexcel
SpringBoot+Vue3实现Excel导入
SpringBoot+Vue3实现Excel导入
110 0
|
5月前
|
easyexcel Java API
SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出
SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出
1073 1