生成excel文件(有备注和表头的情况)

要使用 Java 导出 Excel 文件,并且通过 @ExcelProperty 注解进行列的映射,可以利用 EasyExcel 库。EasyExcel 是阿里巴巴开源的一款高性能 Excel 读写工具,它支持通过注解将类与 Excel 的列进行映射,简化了 Excel 操作的复杂性。

前提准备

  • 添加 EasyExcel 依赖到 pom.xml 文件中:
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version> <!-- 请根据需要选择合适的版本 -->
</dependency>

Excel 导出实现

  1. 定义导出数据的 Java 类 首先,需要定义一个类来映射 Excel 表格中的每一列。
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.WriteStyle;import java.io.Serializable;public class EmployeeExcel implements Serializable {// 第一行备注信息@ExcelProperty("工号")private String employeeId;  // 工号(6位文本)@ExcelProperty("姓名")private String name;@ExcelProperty("操作类型")private String operationType;@ExcelProperty("部门全称")private String departmentName;@ExcelProperty("汇报上级")private String supervisor;@ExcelProperty("工作城市")private String workCity;@ExcelProperty("社保城市")private String socialSecurityCity;@ExcelProperty("职位全称")private String positionTitle;@ExcelProperty("HC编码")private String hcCode;@ExcelProperty("群组")private String group;@ExcelProperty("一级部门")private String firstLevelDepartment;@ExcelProperty("二级部门")private String secondLevelDepartment;@ExcelProperty("三级部门")private String thirdLevelDepartment;@ExcelProperty("四级部门")private String fourthLevelDepartment;@ExcelProperty("五级部门")private String fifthLevelDepartment;@ExcelProperty("六级部门")private String sixthLevelDepartment;@ExcelProperty("七级部门")private String seventhLevelDepartment;@ExcelProperty("汇报上级工号")private String supervisorEmployeeId;@ExcelProperty("汇报上级姓名")private String supervisorName;@ExcelProperty("工作城市")private String workCity2;  // 注意列名可以重复,需要做区分@ExcelProperty("社保城市(无需填写)")private String socialSecurityCity2;@ExcelProperty("岗位ID编号")private String positionId;@ExcelProperty("是否带编调整")private String isAdjustment;@ExcelProperty("HC编码(非带编调整则该项是必填)")private String hcCodeForAdjustment;@ExcelProperty("校验未通过原因")private String validationFailureReason;// Getter and Setter methodspublic String getEmployeeId() {return employeeId;}public void setEmployeeId(String employeeId) {this.employeeId = employeeId;}// 其他字段的 Getter 和 Setter 方法}
  1. 使用 EasyExcel 导出数据 然后,可以利用 EasyExcel 库来导出数据。接下来是 Excel 导出的核心代码。
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.style.AbstractCellStyleStrategy;
import com.alibaba.excel.write.style.FillPatternType;
import com.alibaba.excel.write.style.HorizontalAlignmentStyleStrategy;
import org.apache.poi.ss.usermodel.*;import java.util.ArrayList;
import java.util.List;public class ExcelExportExample {public static void main(String[] args) {// 数据列表List<EmployeeExcel> employeeExcelList = new ArrayList<>();// 模拟添加数据EmployeeExcel employee = new EmployeeExcel();employee.setEmployeeId("123456");employee.setName("张三");employee.setOperationType("新增");// 填充其他字段...employeeExcelList.add(employee);// 导出 Excel 文件exportExcel(employeeExcelList);}public static void exportExcel(List<EmployeeExcel> data) {// Excel 文件路径String fileName = "员工信息.xlsx";// 创建 ExcelWriterEasyExcel.write(fileName, EmployeeExcel.class).sheet("员工信息").doWrite(data);}
}
  1. 添加备注信息 如果 Excel 的第一行是备注信息(如工号为6位文本格式等),可以在写入 Excel 时手动插入备注行。备注行可以通过自定义样式进行设置,如背景颜色。

  2. 设置单元格合并和背景颜色 如果需要合并单元格或者设置背景颜色,你可以使用 WriteStyleCellStyle 来设置样式。示例如下:

 

java

import com.alibaba.excel.write.style.AbstractCellStyleStrategy;
import org.apache.poi.ss.usermodel.*;import java.util.List;public class CustomCellStyleStrategy extends AbstractCellStyleStrategy {@Overrideprotected void initCellStyle(Workbook workbook) {super.initCellStyle(workbook);// 设置备注行的背景颜色Sheet sheet = workbook.getSheetAt(0);Row row = sheet.createRow(0);row.createCell(0).setCellValue("工号为6位文本格式");row.createCell(1).setCellValue("变更前信息(不用填写,系统自动填充)");// 合并单元格sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 1));// 设置背景颜色CellStyle cellStyle = workbook.createCellStyle();cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);row.getCell(0).setCellStyle(cellStyle);row.getCell(1).setCellStyle(cellStyle);}@Overrideprotected void setColumnWidth(Sheet sheet) {super.setColumnWidth(sheet);sheet.setColumnWidth(0, 6000); // 设置列宽}
}

EasyExcel.write() 方法中加入该自定义样式:

EasyExcel.write(fileName, EmployeeExcel.class).sheet("员工信息").registerWriteHandler(new CustomCellStyleStrategy()).doWrite(data);

总结

  • @ExcelProperty 注解用于将 Java 类的字段映射到 Excel 的列。
  • 通过 EasyExcel,可以轻松实现 Excel 文件的导出,支持数据模型与表格列的直接绑定。
  • 在导出时,可以添加备注行、合并单元格、设置背景颜色等自定义样式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel 面试 01 “Highlight in red the 10 lowest orders”

要在 Excel 中完成“Highlight in red the 10 lowest orders”的任务&#xff0c;可以使用条件格式&#xff08;Conditional Formatting&#xff09;。以下是详细步骤&#xff1a; 步骤 1&#xff1a;选择数据范围 打开包含订单数据的工作表。选中包含订单金额或数量的单元格范…

留学生交流互动系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

Junit如何禁用指定测试类,及使用场景

在JUnit中禁用指定测试类可以通过多种方式实现&#xff0c;具体取决于使用的JUnit版本&#xff08;JUnit 4 或 JUnit 5&#xff09;。以下是针对两个版本的详细说明以及它们可能的使用场景&#xff1a; JUnit 4 禁用整个测试类 可以使用Ignore注解来忽略整个测试类。这将导致…

算法基础一:冒泡排序

一、冒泡排序 1、定义 冒泡排序&#xff08;英语&#xff1a;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序&#xff08;如从大到小、首字母从A到Z&#xff09;错误就把他们交换过来。 …

Spark大数据开发与应用案例(视频教学版)(一)

作者&#xff1a;余辉 简介&#xff1a;余辉&#xff0c;硕士毕业于中科院&#xff0c;从事IT行业12年。专注于大数据和机器学习。在数据团队担任过的角色&#xff1a;研发、架构师、负责人、讲师。数据知识产权&#xff1a;出版大数据书籍【1】本&#xff0c;论文【2】篇&…

跨域请求问题

跨域请求简介 跨域请求&#xff1a;通过一个域的JavaScript脚本和另外一个域的内容进行交互 域的信息&#xff1a;协议、域名、端口号 同域&#xff1a;当两个域的协议、域名、端口号均相同 如下所示&#xff1a; 同源【域】策略&#xff1a;在浏览器中存在一种安全策略就是…

探索开源项目 kernel:技术的基石与无限可能

在开源的广袤世界中&#xff0c;有一颗璀璨的明星——kernel&#xff08;https://gitee.com/openeuler/kernel&#xff09;&#xff0c;它宛如一座技术的宝藏&#xff0c;蕴含着无数的智慧与创新&#xff0c;为众多开发者所瞩目和敬仰。 一、初窥 kernel 项目 当我第一次接触…

Spring Boot Actuator、Spring Boot Actuator使用、Spring Boot Actuator 监控、Spring程序监控

SpringBoot四大核心之actuator——程序监控器 1. 添加 Spring Boot Actuator 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 2. 配置 …

C++“STL之String”

​ &#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;C入门 目录 ​编辑 前言 一、STL简介 1.1 STL是什么&#xff1f; 1.2 STL的版本&#xff08;这个不是很重要了解即可&#xff09; 1.3 STL的六大组件 二…

语言模型评价指标

1. BLEU&#xff08;Bilingual Evaluation Understudy&#xff09; 目标&#xff1a;衡量生成文本和参考文本之间的词汇相似性。 计算步骤&#xff1a; N-gram 匹配&#xff1a; 将生成文本和参考文本分解成 1-gram、2-gram、…、N-gram&#xff08;通常取到 4-gram&#xff…

2-199基于Matlab-GUI的混合粒子群算法求解TSP问题

基于Matlab-GUI的混合粒子群算法求解TSP问题&#xff0c;多种路径可选&#xff0c;可设置微粒数目、迭代次数&#xff0c;动态展示路径规划过程及迭代曲线&#xff0c;得到叫佳的路径&#xff0c;输出最优路径序列及最终距离。程序已调通&#xff0c;可直接运行。 2-199基于Ma…

【ArcGIS Pro】完整的nc文件整理表格模型构建流程及工具练习数据分享

学术科研啥的要用到很多数据&#xff0c;nc文件融合了时间空间数据是科研重要文件。之前分享过怎样将nc文件处理成栅格后整理成表格。小编的读者还是有跑不通整个流程的&#xff0c;再来做一篇总结篇&#xff0c;也分享下练习数据跟工具&#xff0c;如果还是弄不了的&#xff0…

2412d,d语言中写汇编

原文 嗨,我只是想共享该要点,它展示了如何在ASM中用D编写你好. D中写汇编非常方便!这是我写的: extern(C) int main() {auto hip "hello D\n".ptr;size_t len 8;//write(1,消息,长度)asm {mov RDX, len;//缓冲长度mov RSI, hip;//消息缓冲mov EDI, 1;//Stdout文描…

VM虚拟机配置ubuntu网络

目录 桥接模式 NAT模式 桥接模式 特点&#xff1a;ubuntu的IP地址与主机IP的ip地址不同 第一部分&#xff1a;VM虚拟机给ubuntu的网络适配器&#xff0c;调为桥接模式 第二部分&#xff1a;保证所桥接的网络可以上网 第三部分&#xff1a;ubuntu使用DHCP&#xff08;默认&…

C++软件设计模式之观察者模式

观察者模式的动机意图 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了对象之间的一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都能够自动收到通知并进行相应的更新。 动机…

评分模型在路网通勤习惯分析中的应用——启发式搜索(2)

接上文《评分模型在路网通勤习惯分析中的应用——提出问题&#xff08;1&#xff09;》&#xff0c;本文内容主要针对上文提出的问题解决思路&#xff0c;详细讨论每一步骤中的具体处理措施。 4、问题的详细解决过程 4.1、对地图数据进行结构化 地图的本质是一种有向加权图结…

Mysql(MGR)和ProxySQL搭建部署-Kubernetes版本

一、Mysql(MGR) 1.1 statefulSet.yaml apiVersion: apps/v1 kind: StatefulSet metadata:labels:app: mysqlname: mysqlnamespace: yihuazt spec:replicas: 3serviceName: mysql-headlessselector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:affinity:p…

【C语言】库函数常见的陷阱与缺陷(三):内存分配函数[3]--realloc

C语言中的realloc函数用于重新分配先前分配的内存块的大小,并可能更改其位置。然而,realloc函数的使用也存在一些陷阱与缺陷。 一、功能与常见用法 realloc 函数用于调整之前通过 malloc 或 calloc 分配的内存块的大小。它既可以增加也可以减少内存的大小,具体取决于请求的…

Lecture 17

10’s Complement Representation 主要内容&#xff1a; 1. 10’s 补码表示: • 10’s 补码表示法需要指定表示的数字位数&#xff08;用 n 表示&#xff09;。 • 表示的数字取决于 n 的位数&#xff0c;这会影响具体数值的解释。 2. 举例: • 如果采用 3 位补码&…