日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入

目前的需求是数据库字段固定,而excel的字段不固定,需要实现excel导入到一个数据库内。

首先是前端的字段匹配,显示数据库字段和表头字段

读取表头字段:

我这里实现的是监听器导入,需要新建一个listen类。

读Excel | Easy Excel 官网

其中用到的主要方法(还有hasNext,doAfterAllAnalysed等):

  • invoke:按照每一行读取
  • invokeHead:读取第一行(表头)

将表头的字段返回给前端,同时我把后端的字段用数组写死在前端了(也可以后代传),

设置前端展示的表头:

按照前端写定的字段按顺序展示:

结果,我的表头是(0到31),排版没排好:

然后把前端对应的映射传给后端:

这里的fielMapping是自定义的一个map,因为我的excel表头是中文,而数据库是英文

后端通过反射,将值设置在映射的字段中,在invoke中遍历单元格实现

java 复制代码
            for (Map.Entry<Integer, Cell> entry : rowMap.entrySet()) {
                Integer index = entry.getKey();
                ReadCellData<?> cellData = (ReadCellData<?>) entry.getValue();

                // 获取当前单元格的字符串值
                String cellValue = cellData.getStringValue();
//                System.out.println("索引: " + index + ", 单元格值: " + cellValue);
                // 获取当前列的表头名称
                String header = headers.get(index); // 从保存的表头中获取
//                System.out.println("表头: " + header);

                // 根据表头名称获取对应的字段名
                String fieldName = fieldMapping.get(header);
//                System.out.println("找到字段名: " + fieldName);

                if (fieldName != null) {
                    // 使用反射将值设置到实体类中
                    setFieldValue(data, fieldName, cellValue);
//                    System.out.println("已设置值: " + cellValue + " 到字段: " + fieldName);
                } else {
//                    System.out.println("未找到对应字段: " + cellValue);
                }
            }

setFieldValue是自己写的反射方法,因为我的字段有时间,要判断一下类型是否等于Date.Class,然后对日期进行解析。

相关推荐
兰令水2 小时前
leecodecode【树形DP】【2026.6.11打卡-java版本】
java·算法·深度优先
骑士雄师2 小时前
19.3 langgraph的工作节点和路由函数
java·前端·数据库
fox_lht3 小时前
14.6.将错误重定向到标准错误
开发语言·后端·学习·rust
SWAGGY..3 小时前
Linux系统编程:(十三)环境变量
java·linux·算法
程序员黑豆3 小时前
AI全栈开发 - Java:基本数据类型 vs 引用数据类型的内存存储
java·前端·ai编程
道友可好3 小时前
AI 测试全绿,代码却是错的
前端·人工智能·后端
布朗克1683 小时前
34 JVM深入理解
java·jvm
Flittly3 小时前
【AgentScope Java新手村系列】(4)结构化输出
java·spring boot·spring·ai
techdashen3 小时前
Rust 基础设施团队 2025 Q4 回顾与 2026 Q1 计划
开发语言·后端·rust
何以解忧,唯有..3 小时前
Python 中的继承机制:从基础到高级用法详解
java·开发语言·python