当前位置: 首页 > news >正文

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

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

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

读取表头字段:

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

读Excel | Easy Excel 官网

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

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

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

设置前端展示的表头:

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

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

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

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

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

            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,然后对日期进行解析。

相关文章:

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

目前的需求是数据库字段固定&#xff0c;而excel的字段不固定&#xff0c;需要实现excel导入到一个数据库内。 首先是前端的字段匹配&#xff0c;显示数据库字段和表头字段 读取表头字段&#xff1a; 我这里实现的是监听器导入&#xff0c;需要新建一个listen类。 读Excel …...

Unable to open nested entry ‘********.jar‘ 问题解决

今天把现网版本的task的jar拖回来然后用7-zip打开拖了一个jar进去替换mysql-connector-java-5.1.47.jar 为 mysql-connector-java-5.1.27.jar 启动微服务的时候就报错下面的 Exception in thread "main" java.lang.IllegalStateException: Failed to get nested ar…...

反编译华为-研究功耗联网监控日志

摘要 待机功耗中联网目前已知的盲点&#xff1a;App自己都不知道的push类型的被动联网、app下载场景所需时长、组播联网、路由器打醒AP。 竞品 策略 华为 灭屏使用handler定时检测&#xff08;若灭屏30分钟内则周期1分钟&#xff0c;否则为2分钟&#xff09;&#xff0c;检…...

线程池——Java

一、前言 在字符串常量池中&#xff0c;字符串常量在java程序运行之前就已经创建好了&#xff0c;等程序运行起来后&#xff0c;就可以直接从常量池中拿到字符串并加载到内存中&#xff0c;这样的设计就省下了字符串的构造与销毁的内存开销。 二、优势 操作系统由内核与应用程…...

java 17天 TreeSet以及Collections

SortedSet TreeSet Collections 所有单值集合 1 SortedSet 特点&#xff1a;有序 唯一 实现类&#xff1a;TreeSet 利用TreeSet特有的对数据进行升序&#xff0c;再放到ArryList进行for下标倒序打印&#xff0c;或者利用自身的pollLast&#xff08;&#xff09;取出最后元…...

JavaScript 第27章:构建工具与自动化

在现代JavaScript开发中&#xff0c;构建工具、代码转换工具、代码质量和代码格式化工具对于提高开发效率、保持代码整洁以及确保代码质量有着至关重要的作用。下面将分别介绍Webpack、Babel、ESLint和Prettier的配置与使用&#xff0c;并给出一些示例。 1. 构建工具&#xff…...

Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题

Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题 最近手里一台乐视的手机root后, 连接wifi时一直提示网络连接受限,wifi图标显示叹号. 但是不影响正常的网络访问. 解决办法: adb shell settings delete global captive_portal_modeadb shell settings put globa…...

如何实现网页上的闪烁效果

在网页上实现闪烁效果通常可以通过CSS或者JavaScript来完成。有两种方法&#xff1a;一种是使用纯CSS&#xff0c;另一种是结合JavaScript来创建更复杂的闪烁效果。 方法一&#xff1a;使用纯CSS CSS中可以使用animation属性来创建简单的动画效果&#xff0c;包括闪烁效果。这…...

事件总线—Event Bus 使用及讲解

一、工作原理 事件总线&#xff0c;主要用来实现非父子组件之间的传值。 它的工作原理&#xff1a;通过new Vue()再创建一个新的 Vue 实例对象bus&#xff0c;将这个新的实例对象作为桥梁&#xff0c;来实现两个组件之间的传值。 二、工作步骤 1、创建事件总线 bus 我们可以…...

信息安全工程师(67)网络流量清洗技术与应用

前言 网络流量清洗技术是现代网络安全领域中的一项关键技术&#xff0c;它主要用于过滤和清理网络流量中的恶意部分&#xff0c;确保正常的网络通信。 一、网络流量清洗技术的定义与原理 网络流量清洗技术&#xff0c;也称为流量清理&#xff08;Traffic Scrubbing&#xff09;…...

【项目】论坛系统测试

文章目录 一、项目介绍二、测试环境三、测试用例3.1 论坛系统功能测试用例3.2 论坛系统非功能测试用例 四、测试计划1. 手工测试1.1 注册页面1.2 登陆页面1.3 主页面&#xff08;列表页&#xff09; 2. 自动化测试2.1 添加对应的依赖2.2 Utils类&#xff08;公有类&#xff09;…...

XJ02、消费金融|消费金融业务模式中的主要主体

根据所持有牌照类型的不同&#xff0c;消费金融服务供给方主要分为商业银行、汽车金融公司、消费金融公司和小贷公司&#xff0c;不同类型机构定位不同、提供消费金融服务与产品类型也各不相同。此外&#xff0c;互联网金融平台也成为中国消费金融业务最重要的参与方之一&#…...

基于神经网络的农业病虫害损失预测

【摘 要】鉴于农业病虫害经济损失的预测具有较强的复杂性和非线性特性&#xff0c;设计了一种新型的GRNN预测模型&#xff0c;对农业病虫害经济损失进行预测。该模型基于人工神经网络捕捉非线性变化独特的优越性&#xff0c;在神经网络技术和江苏省气象局提供的数据的基础上&am…...

【DSP】TI 微控制器和处理器的IDE安装CCSTUDIO

【DSP】TI 微控制器和处理器的IDE安装CCSTUDIO 1.背景2.下载IDE3.安装IDE1.背景 TI:Texas instruments即德州仪器公司。 https://www.ti.com.cn/CCSTUDIO即Code Composer Studio。 Code Composer Studio 是适用于 TI 微控制器和处理器的集成开发环境 (IDE)。 它包含一整套用于…...

Web应用框架-Django应用基础

1. 认识Django Django是一个用Python编写的开源高级Web框架&#xff0c; 旨在快速开发可维护和可扩展的Web应用程序。 使用Django框架的开发步骤&#xff1a; 1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护 Django官网&#xff1a; Djang…...

qt QMainWindow详解

一、概述 QMainWindow继承自QWidget&#xff0c;并提供了一个预定义的布局&#xff0c;将窗口分成了菜单栏、工具栏、状态栏和中央部件区域。这些区域共同构成了一个功能丰富的主窗口&#xff0c;使得应用程序的开发更加简单和高效。 二、QMainWindow的常用组件及功能 菜单栏&…...

第二单元历年真题整理

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 参考答案 1. A 2. A 3. A 4. D 5. D 6. D 解析&#xff1a; 栈和队列是两个不一样的结构&#xff0c;不能放在一起表示 7. B 8. C 解析&#xff1a; S --> A0 | B1 --> (S1 | 1) 0 | (S0 | 0)1 --> S10 | 10 | S…...

Ubuntu下载protobuf

1 安装依赖库 sudo apt-get install autoconf automake libtool curl make g unzip -y2 下载protobuf ProtoBuf 下载地址:https://github.com/protocolbuffers/protobuf/releases 如果要在 C 下使⽤ ProtoBuf&#xff0c;可以选择cpp.zip 其他语言选择对应的链接即可 希望支持…...

【算法优化】混合策略改进的蝴蝶优化算法

摘要 蝴蝶优化算法 (Butterfly Optimization Algorithm, BOA) 是一种新兴的智能优化算法&#xff0c;其灵感来自蝴蝶的觅食行为。本文基于经典BOA&#xff0c;通过引入混合策略进行改进&#xff0c;从而提高其在全局寻优和局部搜索中的性能。实验结果表明&#xff0c;改进的蝴…...

什么是标准差?详解

文章目录 一、什么是标准差&#xff1f;二、公式三、举个例子&#x1f330;参考 一、什么是标准差&#xff1f; 在统计学中&#xff0c;标准差&#xff08;Standard Deviation&#xff09;是用于衡量变量值围绕其平均值变化程度的指标。低标准差表示这些值通常接近平均值&…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...