EasyExcel(环境搭建以及常用写入操作)
文章目录
- EasyExcel环境搭建
- 1.创建模块 easyexcel-demo
- 2.引入依赖
- 3.启动类创建
- EasyExcel写
- 1.最简单的写入
- 1.模板
- 2.方法
- 3.结果 Write01.xlsx
- 2.指定字段不写入Excel
- 1.模板
- 2.方法
- 3.结果 Write02.xlsx
- 3.指定字段写入excel
- 1.模板
- 2.方法
- 3.结果 Write03.xlsx
- 4.按照index顺序写入excel
- 1.模板
- 2.方法
- 3.结果 Write04.xlsx
- 5.复杂头数据写入,合并单元格
- 1.模板
- 2.方法
- 3.结果 Write05.xlsx
- 6.写入数据到不同的sheet中
- 1.模板
- 2.方法
- 3.结果 Write06.xlsx
- 7.日期数字格式化
- 1.模板
- 2.方法
- 3.结果 Write07.xlsx
- 8.写入图片到Excel
- 1.模板
- 2.方法
- 3.结果 Write08.xlsx
- 9.通过注解形式设置写入Excel样式
- 1.模板
- 2.方法
- 3.结果 Write09.xlsx
- 10.应用自定义转换器
- 1.模板
- 2.自定义转换器
- 3.方法
- 4.结果 Write10.xlsx
EasyExcel环境搭建
1.创建模块 easyexcel-demo
2.引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version></parent><groupId>com.sunxiansheng</groupId><artifactId>easyexcel-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>
3.启动类创建
package com.sunxiansheng;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Description: 启动类** @Author sun* @Create 2024/10/29 11:19* @Version 1.0*/
@SpringBootApplication
public class ExcelApplication {public static void main(String[] args) {SpringApplication.run(ExcelApplication.class, args);}
}
EasyExcel写
1.最简单的写入
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write01 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 最简单的写入*/@Testpublic void testWrite01() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write01.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write01.class).build();// 3.构造数据List<Write01> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write01 user = Write01.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();}
3.结果 Write01.xlsx
2.指定字段不写入Excel
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write02 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 指定字段不写入excel*/@Testpublic void testWrite02() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write02.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write02.class).excludeColumnFieldNames(Arrays.asList("salary", "hireDate")) // 排除字段.build();// 3.构造数据List<Write02> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write02 user = Write02.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();}
3.结果 Write02.xlsx
3.指定字段写入excel
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write03 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 指定字段写入excel*/
@Test
public void testWrite03() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write03.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write03.class).includeColumnFieldNames(Arrays.asList("salary", "hireDate")) // 包含字段.build();// 3.构造数据List<Write03> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write03 user = Write03.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write03.xlsx
4.按照index顺序写入excel
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write04 {@ExcelProperty(value = "用户编号", index = 0)private Integer userId;@ExcelProperty(value = "姓名", index = 1)private String userName;@ExcelProperty(value = "性别", index = 3)private String gender;@ExcelProperty(value = "工资", index = 4)private Double salary;@ExcelProperty(value = "入职时间", index = 2)private Date hireDate;}
2.方法
/*** 按照index顺序写入excel*/
@Test
public void testWrite04() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write04.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write04.class).build();// 3.构造数据List<Write04> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write04 user = Write04.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write04.xlsx
5.复杂头数据写入,合并单元格
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write05 {@ExcelProperty(value = {"group1", "用户编号"})private Integer userId;@ExcelProperty(value = {"group1", "姓名"})private String userName;@ExcelProperty(value = {"group2", "性别"})private String gender;@ExcelProperty(value = {"group2", "工资"})private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 复杂头数据写入,合并单元格*/
@Test
public void testWrite05() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write05.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write05.class).build();// 3.构造数据List<Write05> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write05 user = Write05.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write05.xlsx
6.写入数据到不同的sheet中
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class Write06 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;
}
2.方法
/*** 写入数据到不同的sheet中*/
@Test
public void testWrite06() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write06.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.循环创建十个sheet,并分别写入数据for (int j = 0; j < 10; j++) {// 创建sheetWriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息" + j).head(Write06.class).build();// 3.构造数据List<Write06> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write06 user = Write06.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);}// 5.关闭流excelWriter.finish();
}
3.结果 Write06.xlsx
7.日期数字格式化
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class Write07 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")@ContentStyle(dataFormat = 2) // 保留两位小数private Double salary;@ExcelProperty(value = "入职时间")@DateTimeFormat(value = "yyyy年MM月dd日 HH时mm分ss秒") // 日期格式化private Date hireDate;
}
2.方法
/*** 日期数字格式化*/
@Test
public void testWrite07() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write07.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write07.class).build();// 3.构造数据List<Write07> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write07 user = Write07.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.213214234).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write07.xlsx
8.写入图片到Excel
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@ContentRowHeight(value = 100) // 内容行高
@ColumnWidth(value = 20) // 列宽
static class Write08 {// 使用抽象文件表示一个图片@ExcelProperty(value = "File类型")private File file;// 使用输入流保存一个图片@ExcelProperty(value = "InputStream类型")private InputStream inputStream;// 当使用String类型保存一个图片的时候需要使用StringImageConverter转换器@ExcelProperty(value = "String类型", converter = StringImageConverter.class)private String str;// 使用二进制数据保存为一个图片@ExcelProperty(value = "二进制数据(字节)")private byte[] byteArr;// 使用网络链接保存为一个图片@ExcelProperty(value = "网络图片")private URL url;
}
2.方法
/*** 写入图片到Excel*/@Testpublic void testWrite08() throws Exception {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write08.xlsx";// 本地图片String imagePath = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/th.jpeg";// 网络图片URL url = new URL("https://cn.bing.com/th?id=OHR.TanzaniaBeeEater_ZH-CN3246625733_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp");// 构建writerExcelWriter excelWriter = EasyExcel.write(fileName).build();// 构建sheetWriteSheet writeSheet = EasyExcel.writerSheet().head(Write08.class).sheetName("图片信息").build();// 构建data// 将图片读取到byte数组中byte[] bytes = new byte[(int) new File(imagePath).length()];InputStream inputStream = new FileInputStream(imagePath);inputStream.read(bytes, 0, bytes.length);List<Write08> imageDataList = new ArrayList<>();// 创建数据模板Write08 imageData = Write08.builder().file(new File(imagePath)) // File类型.inputStream(new FileInputStream(imagePath)) // InputStream类型.str(imagePath) // String类型.byteArr(bytes) // 二进制数据.url(url) // 网络图片.build();// 添加要写入的图片模型imageDataList.add(imageData);// 写入数据excelWriter.write(imageDataList, writeSheet);// 关闭流excelWriter.finish();}
3.结果 Write08.xlsx
9.通过注解形式设置写入Excel样式
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builder@HeadRowHeight(value = 30) // 头部行高@ContentRowHeight(value = 25) // 内容行高@ColumnWidth(value = 20) // 列宽// 头字体设置成20, 字体默认宋体@HeadFontStyle(fontName = "宋体", fontHeightInPoints = 20)// 内容字体设置成20, 字体默认宋体@ContentFontStyle(fontName = "宋体", fontHeightInPoints = 20)public static class Write09 {@ExcelProperty(value = "用户编号")private Integer userId;// 字符串的头字体设置成20@HeadFontStyle(fontHeightInPoints = 30)// 字符串的内容字体设置成20,默认宋体@ContentFontStyle(fontName = "宋体", fontHeightInPoints = 20)@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 通过注解形式设置写入Excel样式*/
@Test
public void testWrite09() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write09.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write09.class).build();// 3.构造数据List<Write09> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write09 user = Write09.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write09.xlsx
10.应用自定义转换器
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class Write10 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别", converter = GenderConverter.class) // 使用自定义转换器private Integer gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;
}
2.自定义转换器
/*** 自定义转换器,比如数据库中0代表男,1代表女,导出到Excel中需要转换为男和女,注意,需要是public类型的*/
public static class GenderConverter implements Converter<Integer> {private static final String MALE = "男";private static final String FEMALE = "女";/*** Java类型是Integer** @return*/@Overridepublic Class<?> supportJavaTypeKey() {return Integer.class;}/*** Excel类型是String** @return*/@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}/*** 写入Excel时,将Integer类型的数据转换为String类型** @param value* @param contentProperty* @param globalConfiguration* @return* @throws Exception*/@Overridepublic WriteCellData<?> convertToExcelData(Integer value,ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) throws Exception {// 根据整数值返回对应的性别字符串String gender;switch (value) {case 0:gender = MALE;break;case 1:gender = FEMALE;break;default:gender = "未知";}// 返回转换后的 Excel 单元格数据return new WriteCellData<>(gender);}/*** 读取Excel时,将String类型的数据转换为Integer类型** @param cellData* @param contentProperty* @param globalConfiguration* @return* @throws Exception*/@Overridepublic Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {// 获取Excel的值String cellDataStringValue = cellData.getStringValue();// 转换为Java的值switch (cellDataStringValue) {case MALE:return 0; // 男,返回0case FEMALE:return 1; // 女,返回1default:return -1; // 其他,返回-1}}
}
3.方法
/*** 应用自定义转换器*/
@Test
public void testWrite10() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write10.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write10.class).build();// 3.构造数据List<Write10> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write10 user = Write10.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? 1 : 0) // 这里插入的是数字,使用自定义转换器转换为男和女.salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
4.结果 Write10.xlsx
相关文章:

EasyExcel(环境搭建以及常用写入操作)
文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…...

探索Milvus数据库:新手入门指南(tencent云)
开启向量数据库的奇妙之旅 在数据科学和机器学习领域,Milvus是一个专为向量数据设计的开源数据库。它以其高性能和易于使用的特点,成为了处理大规模向量搜索任务的理想选择。如果你是Milvus的新手,这篇文章将带你一步步了解如何开始你的Milv…...
MySQL:一文弄懂时区time_zone
你还在被以下问题困扰吗: MySQL 的安装规范中应该设置什么时区? JAVA 应用读取到的时间和北京时间差了 14 个小时,为什么?怎么解决? 已经运行一段时间的业务,修改 MySQL 的时区会影响已经存储的时间类型数据…...

基于python的天气可视化系统
目 录 1绪论 1.1研究背景 1.2研究意义 1.3当前研究现状 1.4研究内容 第2章 相关基础理论 2.1 爬虫技术基础 2.2 Python 在爬虫中的应用 2.3 爬虫系统的设计要点 第3章 天气网数据可视化系统设计 3.1 系统概述及主要内容 3.1.1 系统架构 3.1.2 工具选择…...

STM32 高级 WIFi案例1:测试AT指令
需求描述 测试AT指令是否能够正常控制ESP32的wifi,比如重启、读取设备信息等。 思路: stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。 配置: 第一步:对ESP32芯片烧录可以读取stm32命令的固件(fac…...

SpringCloud微服务架构
文章目录 认识微服务:SpringCloud 服务拆分及远程调用实现夸远程服务调用使用RestTemplateEureka注册中心 搭建EruekaServer注册服务服务发现 Ribbon负载均衡 修改负载均衡规则解饿加载 Nacos注册中心(nacos一部分功能) 服务注册到nacosnacos…...
WebSocket封装
提示:记录工作中遇到的需求及解决办法 文章目录 前言二、背景三、WebSocket3.1 什么是 WebSocket ?为什么使用他?四、封装 WebSocket4.1 Javascript 版本4.2 Typescript 版本4.3 如何使用?五、我的痛点如何处理前言 本文将介绍 WebSocket 的封装,比如:心跳机制,重连和一…...
基于Flask后端框架的均值填充
Flask可以在Jupyter上运行,首先需要安装这两个库: !pip install Flask-CORS !pip install Flask 引入依赖: from flask import Flask, request, jsonify, send_file import os import pandas as pd import io from flask import Flask fr…...

SQL-Server链接服务器访问Oracle数据
SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一:使用 NetFx3.cab 文件 下载 NetFx3.cab 文件,并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符,输入以下命令并回车: …...
Python中continue语句的使用
1 问题 本文将对在循环中continue语句的用途和如何正确使用continue进行分析与总结。 2 方法 (1)定义: 在编程中,“continue”是一个关键字,用于循环结构中。它的作用是跳过当前循环的剩余部分,立即进入下一…...
JavaScript的diff库详解(示例:vue项目实现两段字符串比对标黄功能)
diff库介绍 diff 库是基于 Myers 差分算法 实现的 JavaScript 文本差异库。 Myers 差分算法 是由 Eugene Myers 在 1986 年发表的一篇经典算法论文 “An O(ND) Difference Algorithm and its Variations” 中描述的一种高效算法,用于计算两个序列(通常是…...

自动驾驶3D目标检测综述(六)
停更了好久终于回来了(其实是因为博主去备考期末了hh) 这一篇接着(五)的第七章开始讲述第八章的内容。第八章主要介绍的是三维目标检测的高效标签。 目录 第八章 三维目标检测高效标签 一、域适应 (一)…...

the request was rejected because no multipart boundary was found
文章目录 1. 需求描述2. 报错信息3. 探索过程 1. 使用postman 排除后端错误2. 搜索网上的解决方法3. 解决方法 1. 需求描述 想要在前端上传一个PDF 发票,经过后端解析PDF之后,将想要的值自动回填到对应的输入框中 2. 报错信息 org.apache.tomcat.u…...
HarmonyOS-面试整理
目录 为什么选择HarmonyOS/ 优点/特点鸿蒙系统的权限有哪些说一说鸿蒙系统的安全机制说一说鸿蒙系统的微内核与安卓的内核区别鸿蒙操作系统的微内核架构有哪些优势分布式能力在鸿蒙系统中如何实现请解释一下鸿蒙系统中的分布式软总线技术如何在鸿蒙操作系统中进行多设备协同开发…...
[C#] 「Unity」「游戏开发」如何在Canvas下的Button控件下实例化Image元素
在开发过程中,经常需要在UI上动态添加元素。特别是在Unity中,Canvas控件通常用来作为UI元素的容器,而Button控件则常用于交互。而在某些情况下,我们可能需要在一个Button下实例化一个Image元素,并确保它的位置与Button的位置保持一致。然而,简单地使用Button的坐标值往往…...

Nginx1.20.2-Linux-安装
文章目录 1.下载压缩包1.官网下载2.找到1.20.23.百度网盘 2.Linux安装1.搭建gcc环境2.上传到 /usr/local/nginx1.20.23.解压1.解压到当前目录2.删除压缩包 4.配置Nginx的编译路径1.进入nginx-1.20.22.执行内部的脚本,指定编译路径为/usr/local/nginx 5.编译并安装6.…...
Elasticsearch名词解释
文章目录 1.什么是Elasticsearch?2.什么是elastic stack(ELK)?3.什么是Lucene?4.什么是文档(document)?5.什么是词条(term)?6.什么是正向索引?7.什么是倒排索引?8.ES中的索引(index)9.映射(Mapping)10.DSL11.elastcisearch与my…...

Node项目——从0开始构建且共享至Gitee
从0开始构建一个Node.js项目涉及多个步骤,包括设置开发环境、初始化项目、安装依赖、编写代码以及配置版本控制等。以下是一个详细的步骤指南: 1. 安装Node.js和npm 首先,确保你已经安装了Node.js和npm(Node Package Manager&am…...
layui多图上传,tp8后端接收处理
环境:layui2.9.21\thinkphp8.1 前端代码: layui.use([upload, layer], function() {const upload layui.upload;const layer layui.layer;const $ layui.$;// 上传图片const uploadInstImage upload.render({elem: #uploadImage,url: /admin/demo/…...

QEMU网络配置简介
本文简单介绍下qemu虚拟机网络的几种配置方式。 通过QEMU的支持,常见的可以实现以下4种网络形式: 基于网桥(bridge)的虚拟网络。基于NAT(Network Addresss Translation)的虚拟网络。QEMU内置的用户模式网…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...

ubuntu中安装conda的后遗症
缘由: 在编译rk3588的sdk时,遇到编译buildroot失败,提示如下: 提示缺失expect,但是实测相关工具是在的,如下显示: 然后查找借助各个ai工具,重新安装相关的工具,依然无解。 解决&am…...