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

EasyExcel自定义字段对象转换器支持转换实体和集合实体

文章目录

      • 1. 实现ObjectConverter
      • 2. 使用
      • 3. 测试
          • 3.1 导出excel
          • 3.2 导入excel

1. 实现ObjectConverter

package com.tophant.cloud.common.excel.converters;import cn.hutool.json.JSONUtil;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;import java.lang.reflect.Type;/*** 对象转换器* 支持转换字段类型为自定义实体,List<实体>,List<String>,Map<String,实体>等** @author wan.fei* @date 2023/08/26*/
public class ObjectConverter implements Converter<Object> {@Overridepublic Class<?> supportJavaTypeKey() {return Object.class;}@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}/*** 转换从excel中读取的数据为ExcelVO中定义的字段类型(自定义实体,List<实体>,List<String>,Map<String,实体>等)** @param cellData            单元格数据* @param contentProperty     内容属性* @param globalConfiguration 全局配置* @return {@link Object}* @throws Exception 异常*/@Overridepublic Object convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {String stringValue = cellData.getStringValue();// 获取定义的实体字段的实际类型,包括泛型参数信息Type genericType = contentProperty.getField().getGenericType();return JSONUtil.toBean(stringValue, genericType, false);}/*** 转换数据为json字符串,写入到excel文件** @param value               价值* @param contentProperty     内容属性* @param globalConfiguration 全局配置* @return {@link WriteCellData}<{@link ?}>* @throws Exception 异常*/@Overridepublic WriteCellData<?> convertToExcelData(Object value, ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) throws Exception {String json = JSONUtil.toJsonStr(value);return new WriteCellData<String>(json);}
}

2. 使用

在这里插入图片描述

3. 测试

3.1 导出excel

手动添加一些数据
在这里插入图片描述
导出
在这里插入图片描述
写入excel转换成功

3.2 导入excel

将上面生成的excel文件导入
在这里插入图片描述
读取excel数据并转换成功

相关文章:

EasyExcel自定义字段对象转换器支持转换实体和集合实体

文章目录 1. 实现ObjectConverter2. 使用3. 测试3.1 导出excel3.2 导入excel 1. 实现ObjectConverter package com.tophant.cloud.common.excel.converters;import cn.hutool.json.JSONUtil; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.…...

Linux重置ROOT密码(CentOS)

解释说明 在CentOS中重置root密码通常需要进入单用户模式&#xff0c;这是一个没有密码限制的特殊模式&#xff0c;允许您以root权限登录系统并更改密码。 重启系统 如果您无法登录到系统&#xff0c;可以通过重启系统来开始这个过程。您可以使用虚拟机控制台、物理服务器控制台…...

【Spring】一文带你彻底搞懂IOC、AOP

目录 首先简单了解一下什么是spring框架 什么是IOC&#xff1f; 什么是依赖注入&#xff08;DI&#xff09;&#xff1f; 控制反转和依赖注入又有什么关系&#xff1f; AOP是什么&#xff1f; SpringAOP的实现 说了这么多抽象概念&#xff0c;举个实例方便理解 首先简单…...

国际旅游网络的大数据分析(数学建模练习题)

题目&#xff1a;国际旅游网络的大数据分析 伴随着大数据时代的到来,数据分析已经深入到现代社会生活中的各个方面。 无论是国家政府部门、企事业单位还是个人&#xff0c;数据分析工作都是进行决策之前的 重要环节。 山东省应用统计学会是在省民政厅注册的学术类社会组织&…...

音视频技术开发周刊 | 308

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 OpenAI首席科学家最新访谈&#xff1a;对模型创业两点建议、安全与对齐、Transformer够好吗&#xff1f; OpenAI首席科学家Ilya Sutskever最近和他的朋友Sven Strohband进…...

多旋翼飞控底层算法开发系列实验 | 多旋翼动力系统设计实验3

多旋翼动力系统设计实验3 01/多旋翼动力系统简介​​​​​​​ 多旋翼无人机的动力系统通常包括螺旋桨、电机、电调以及电池。动力系统是多旋翼最重要的组成部分&#xff0c;它决定了多旋翼的主要性能&#xff0c;如悬停时间、载重能力、飞行速度和飞行距离等。动力系统的部件…...

Redis之Sentinel(哨兵)机制

一、Sentinel是什么&#xff1f; Sentinel&#xff08;哨岗、哨兵&#xff09;是Redis的高可用性&#xff08;high availability&#xff09;解决方案&#xff1a;由一个或多个Sentinel实例&#xff08;instance&#xff09;组成的Sentinel系统&#xff08;system&#xff09;…...

加密的PDF文件,如何解密?

PDF文件带有打开密码、限制编辑&#xff0c;这两种密码设置了之后如何解密&#xff1f; 不管是打开密码或者是限制编辑&#xff0c;在知道密码的情况下&#xff0c;解密PDF密码&#xff0c;我们只需要在PDF编辑器中打开文件 – 属性 – 安全&#xff0c;将权限状态修改为无保护…...

【java】获取当前年份

目录 一、代码示例二、截图示例 一、代码示例 package com.learning;import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.Year; import java.util.Calendar; import java.util.Date;/*** 获取当前年份*/ public class GetCurrentYear {public …...

前端面试话术集锦第一篇

🚗前端面试集锦目录 💖前端面试话术集锦第一篇💖 💖前端面试话术集锦第二篇💖 文章目录 1. 前端需要注意哪些SEO2. \<img>的title和alt有什么区别3. HTTP的⼏种请求⽅法⽤途4. 从浏览器地址栏输⼊url到显示⻚⾯的步骤5. 如何进⾏⽹站性能优化6. HTTP状态码及其…...

NeRFMeshing - 精确提取NeRF中的3D网格

准确的 3D 场景和对象重建对于机器人、摄影测量和 AR/VR 等各种应用至关重要。 NeRF 在合成新颖视图方面取得了成功&#xff0c;但在准确表示底层几何方面存在不足。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 我们已经看到了最新的进展&#xff0c;例如 NVIDIA 的 …...

后端面试话术集锦第五篇:rabbitmq面试话术

🚗后端面试集锦目录 💖后端面试话术集锦第 1 篇:spring面试话术💖 💖后端面试话术集锦第 2 篇:spring boot面试话术💖 💖后端面试话术集锦第 3 篇:spring cloud面试话术💖 💖后端面试话术集锦第 4 篇:ElasticSearch面试话术💖 💖后端面试话术集锦第 5 …...

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【一】

&#x1f600;前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【一】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章…...

vue3之reactive和ref学习篇

<script lang"ts" setup> // reactive参数必须为引用类型 和ref简单类型或者引用类型 import { reactive, ref } from vue; const arr reactive([10]) const count ref(0); let increasing true; console.log(count) const change ()>{if(increasing){c…...

【推荐】Spring与Mybatis集成整合

目录 1.概述 2.集成 2.1代码演示&#xff1a; 3.整合 3.1概述 3.2 进行整合分页 接着上两篇&#xff0c;我已经写了Mybatis动态之灵活使用&#xff0c;mybatis的分页和特殊字符的使用方式接下来把它们集成起来&#xff0c;是如何的呢&#x1f447;&#x1f447;&#x1…...

listdir, makedirs, shuffle, exists, webdriver.Chrome, roll方法快速查阅

1 os.listdir() os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 2 os.makedirs(path) 方法用于递归创建目录。 如果子目录创建失败或者已经存在&#xff0c;会抛出一个 OSError 的异常 3 numpy.random.shuffle(x) 由numpy.random调用&#xff0c;可…...

java.nio.ByteBuffer 学习笔记

目录 java 重复使用bytebuffer例子&#xff1a; java验证flip函数&#xff1a; flip讲解 以下内容转自&#xff1a; java.nio.ByteBuffer java 重复使用bytebuffer例子&#xff1a; import java.nio.ByteBuffer;public class ByteBufferExample {public static void main…...

自动化实时在线静电监控系统的构成

自动化实时在线静电监控系统是一种帮助企业监测和管理静电问题的技术解决方案。静电在许多工业和商业环境中都是一个潜在的风险和生产问题。通过使用这样的监控系统&#xff0c;企业可以及时发现并采取对策来预防或减轻可能的静电问题。 该系统通常由以下组成部分构成&#xf…...

Windows 转 mac 记录

初次从Windows转mac可能会不适应&#xff0c;建议先看看 【6分钟搞定MacBook】不懂时无所适从&#xff0c;学会后越用越爽&#xff01;_哔哩哔哩_bilibili 我主要是做一些补充记录 1、Windows的右键等于mac的双击触控板、control单击触控板 2、运行中的应用下方会有一个点&…...

Linux_4_文本处理工具和正则表达式

目录 1文本编辑工具之神VIM1.1 vi和vim简介1.2使用vim1.2.1 vim 命令格式1.2.2三种主要模式和转换 1.3扩展命令模式1.3.1扩展命令模式基本命令1.3.2 地址定界1.3.3查找并替换1.3.4定制vim的工作特性1.3.4.1行号1.3.4.2忽略字符的大小写1.3.4.3白动缩进1.3.4.4复制粘贴保留格式1…...

Windows 7 SP2:让经典系统在现代硬件上重获新生的完整解决方案

Windows 7 SP2&#xff1a;让经典系统在现代硬件上重获新生的完整解决方案 【免费下载链接】win7-sp2 UNOFFICIAL Windows 7 Service Pack 2, to improve basic Windows 7 usability on modern systems and fully update Windows 7. 项目地址: https://gitcode.com/gh_mirror…...

终极指南:3步在3DS上原生运行GBA游戏,告别模拟器延迟!

终极指南&#xff1a;3步在3DS上原生运行GBA游戏&#xff0c;告别模拟器延迟&#xff01; 【免费下载链接】open_agb_firm open_agb_firm is a bare metal app for running GBA homebrew/games using the 3DS builtin GBA hardware. 项目地址: https://gitcode.com/gh_mirror…...

高数 | 【极限运算陷阱】破解未定式与直接代入的边界条件

1. 极限运算中的未定式&#xff1a;为什么不能直接代入&#xff1f; 第一次接触极限运算时&#xff0c;很多同学都会犯一个典型错误——看到x趋近于某个值&#xff0c;就直接把这个值代入函数计算。我当年学高数时也踩过这个坑&#xff0c;直到作业本上连续出现三个大红叉才意识…...

Ostrakon-VL-8B效果展示:AI识别货架商品、检查消防通道真实案例

Ostrakon-VL-8B效果展示&#xff1a;AI识别货架商品、检查消防通道真实案例 1. 零售行业的视觉智能革命 走进任何一家超市或餐厅&#xff0c;你都会看到员工忙碌地进行各种检查&#xff1a;商品是否摆放整齐、货架是否需要补货、消防通道是否畅通。这些看似简单的工作&#x…...

React 转 Vue3 避坑指南:10个思维误区和正确写法

从 React 转来的开发者学 Vue3 最容易踩这10个坑&#xff0c;每个坑都附上错误写法和正确解法。前言React 和 Vue3 都是现代前端框架&#xff0c;但思维模型差异不小。很多 React 开发者转 Vue3 时&#xff0c;习惯性地用 React 思维写 Vue&#xff0c;导致各种奇怪的 bug。本文…...

Fast Lab突破:3D激光雷达+强化学习如何重塑无人机自主避障新范式?

1. 当无人机遇上3D激光雷达&#xff1a;一场感知革命 想象一下&#xff0c;你操控的无人机正在茂密的树林中穿行&#xff0c;突然前方出现几根几乎透明的钓鱼线——这种场景会让任何飞手瞬间冒冷汗。传统基于视觉或超声波传感器的无人机就像戴着高度近视眼镜的短跑运动员&#…...

梦幻动漫魔法工坊快速上手:无需代码,网页端直接生成动漫图像

梦幻动漫魔法工坊快速上手&#xff1a;无需代码&#xff0c;网页端直接生成动漫图像 你是否也曾幻想过&#xff0c;用几句话就能召唤出脑海中的梦幻场景&#xff1f;一个可爱的猫耳少女&#xff0c;在樱花树下回眸&#xff1b;或是奇幻的魔法森林里&#xff0c;精灵在月光下起…...

【Simulink】双矢量调制MPC在并网逆变器中的实现:从理论到仿真

1. 双矢量MPC为什么更适合并网逆变器控制 我第一次接触双矢量模型预测控制&#xff08;MPC&#xff09;是在调试一个光伏并网项目时。当时单矢量MPC的电流纹波始终达不到设计要求&#xff0c;直到看到郭磊磊老师那篇经典论文才恍然大悟——原来矢量组合方式才是破局关键。相比传…...

Qwen3-TTS-12Hz-1.7B-CustomVoice效果展示:日语动漫风+韩语偶像音色

Qwen3-TTS-12Hz-1.7B-CustomVoice效果展示&#xff1a;日语动漫风韩语偶像音色 想不想让你的AI助手用元气满满的日语动漫腔跟你打招呼&#xff1f;或者用温柔甜美的韩语偶像音色为你朗读一段歌词&#xff1f;今天&#xff0c;我们就来深度体验一下Qwen3-TTS-12Hz-1.7B-CustomV…...

Qwen3-Reranker-0.6B实战:一键部署,轻松提升企业知识库检索准确率

Qwen3-Reranker-0.6B实战&#xff1a;一键部署&#xff0c;轻松提升企业知识库检索准确率 1. 为什么企业需要专业级重排序技术&#xff1f; 在当今信息爆炸的时代&#xff0c;企业知识库的规模正以惊人的速度增长。传统的关键词匹配检索方式已经无法满足精准获取知识的需求。…...