SpringBoot——生成Excel文件

在Springboot以及其他的一些项目中,或许我们可能需要将数据查询出来进行生成Excel文件进行数据的展示,或者用于进行邮箱发送进行附件添加

依赖引入

此处demo使用maven依赖进行使用

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version>
</dependency>

依赖说明

  1. poi-ooxml:这个依赖主要用于处理 .xlsx 格式的 Excel 文件(Excel 2007 及以上版本)。它依赖于 poi 和 ooxml-schemas 等其他库,提供了对 Office Open XML 格式文件的支持。
  2. poi:这是 Apache POI 的核心库,提供了基本的 Excel 操作功能,包括创建工作簿、工作表、行和单元格等。

 代码实例

此处我们需要将用户的信息使用lis进行传输,通过遍历这个list集合进行向我们事先生成的excel文件中进行添加数据

public class ExcelGeneratorUtil {public static void generateExcel(List<Pitch> pitches) {try {//创建一个新的 Excel 工作簿对象,XSSFWorkbook 用于处理 .xlsx 格式的 Excel 文件Workbook workbook = new XSSFWorkbook();//创建一个文件输出流,用于将工作簿中的数据写入到名为 recommendedColleges.xlsx文件中FileOutputStream fileOut = new FileOutputStream("recommendedColleges.xlsx");//在工作簿中创建一个名为 Recommended Colleges 的工作表Sheet sheet = workbook.createSheet("Recommended Colleges");// 创建表头 选择第0行进行作为表头 并进行设置表头信息Row headerRow = sheet.createRow(0);Cell headerCell1 = headerRow.createCell(0);headerCell1.setCellValue("学校编号");Cell headerCell2 = headerRow.createCell(1);headerCell2.setCellValue("学校名称");Cell headerCell3 = headerRow.createCell(2);headerCell3.setCellValue("专业编号");Cell headerCell4 = headerRow.createCell(3);headerCell4.setCellValue("专业名称");Cell headerCell5 = headerRow.createCell(4);headerCell5.setCellValue("专业最低分");Cell headerCell6 = headerRow.createCell(5);headerCell6.setCellValue("专业最低位次");// 填充数据 初始化行号为 1int rowNum = 1;for (Pitch p : pitches) {//在工作表中创建新的行,并将行号加 1Row row = sheet.createRow(rowNum++);Cell cell1 = row.createCell(0);cell1.setCellValue(p.getSchoolCode());Cell cell2 = row.createCell(1);cell2.setCellValue(p.getSchoolName());Cell cell3 = row.createCell(2);cell3.setCellValue(p.getpCode());Cell cell4 = row.createCell(3);cell4.setCellValue(p.getpName());Cell cell5 = row.createCell(4);cell5.setCellValue(p.getLowestScore());Cell cell6 = row.createCell(5);cell6.setCellValue(p.getLowestRank());}//置每列的宽度,参数 1 是列索引,参数 2 是列宽,单位是 1/256 个字符宽度sheet.setColumnWidth(0, 15 * 256);sheet.setColumnWidth(1, 50 * 256);sheet.setColumnWidth(2, 15 * 256);sheet.setColumnWidth(3, 20 * 256);sheet.setColumnWidth(4, 15 * 256);sheet.setColumnWidth(5, 15 * 256);//将工作簿中的数据写入到文件输出流中,即保存到文件中workbook.write(fileOut);} catch (Exception e) {e.printStackTrace();}}
}

最终实现了excel文件的创建和使用

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

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

相关文章

【Akashic Records】《命若琴弦》

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Akashic Records 文章目录 &#x1f4af;观后感命运的无情与生命的坚持希望的火种与人生的意义虚无与活在当下生死的辩证与享受当下结语 &#x1f4af;观后感 命若琴弦 生命的意义本不在向外的寻取&#xff0c;而在…

C#调用CANoeCLRAdapter.dll文章(一)

一、引言 CANoe 是 Vector 公司开发的一款广泛应用于汽车电子开发、测试和分析的工具。CANoe CLR Adapter 允许开发者使用 C# 等.NET 语言来扩展 CANoe 的功能&#xff0c;实现更灵活、强大的自动化测试和数据处理。本指南将详细介绍如何基于 C# 进行 CANoe CLR Adapter 的开发…

运维和AI的邂逅: 让你的 ssh/terminal 智能化

运维同学很多工作其实就是在命令行里操作服务器&#xff0c;尽管目前有很多可视化的工具&#xff0c;但是命令行(ssh 登录)依然不可或缺&#xff0c;甚至依然还占据着主要工作。这意味着运维同学需要掌握大量和服务器操作系统以及shell相关的知识&#xff0c;记住大量的命令。 …

CMake小结2(PICO为例)

1 前言 之前写过一篇cmake&#xff0c;不过很简单&#xff1a;CMake小结_cmake ${sources}-CSDN博客 构建系统现在真的太多了&#xff0c;完全学不过来的感觉&#xff0c;meson&#xff0c;gardle&#xff0c;buildroot&#xff0c; Maven。。。我是真的有点放弃治疗了。之前…

使用OpenCV实现帧间变化检测:基于轮廓的动态区域标注

在计算机视觉中&#xff0c;帧间差异检测&#xff08;frame differencing&#xff09;是一种常用的技术&#xff0c;用于检测视频流中的动态变化区域。这种方法尤其适用于监控、运动分析、目标追踪等场景。在这篇博客中&#xff0c;我们将通过分析一个基于OpenCV的简单帧间差异…

机器学习01

机器学习的基本过程如下&#xff1a; 1.数据获取 2.数据划分 3.特征提取 4.模型选择与训练 5.模型评估 6.模型调优 一、特征工程&#xff08;重点&#xff09; 0. 特征工程步骤为&#xff1a; 特征提取(如果不是像dataframe那样的数据&#xff0c;要进行特征提取&#…

每日Attention学习24——Strip Convolution Block

模块出处 [TIP 21] [link] CoANet: Connectivity Attention Network for Road Extraction From Satellite Imagery 模块名称 Strip Convolution Block (SCB) 模块作用 多方向条形特征提取 模块结构 模块特点 类PSP设计&#xff0c;采用四个并行分支提取不同维度的信息相比于…

用FileZilla Server 1.9.4给Windows Server 2025搭建FTP服务端

FileZilla Server 是一款免费的开源 FTP 和 FTPS 服务器软件&#xff0c;分为服务器版和客户端版。服务器版原本只支持Windows操作系统&#xff0c;比如笔者曾长期使用过0.9.60版&#xff0c;那时候就只支持Windows操作系统。当时我们生产环境对FTP稳定性要求较高&#xff0c;比…

es-head(es库-谷歌浏览器插件)

1.下载es-head插件压缩包&#xff0c;并解压缩 2.谷歌浏览器添加插件 3.使用

健康检查、k8s探针、Grails+Liquibase框架/health 404 Not Found排查及解决

概述 健康检查对于一个pod而言&#xff0c;其重要性不言而喻。 k8s通过探针来实现健康检查。 探针 k8s提供三种探针&#xff1a; 存活探针&#xff1a;livenessProbe就绪探针&#xff1a;readinessProbe启动探针&#xff1a;startupProbe 存活探针 存活探针决定何时重启…

5个GitHub热点开源项目!!

1.自托管 Moonlight 游戏串流服务&#xff1a;Sunshine 主语言&#xff1a;C&#xff0c;Star&#xff1a;14.4k&#xff0c;周增长&#xff1a;500 这是一个自托管的 Moonlight 游戏串流服务器端项目&#xff0c;支持所有 Moonlight 客户端。用户可以在自己电脑上搭建一个游戏…

【Linux C | 时间】localtime 的介绍、死机、死锁问题以及 localtime_r 函数的时区问题

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

122. 买卖股票的最佳时机 II 反向递推的方法

下面是将你提供的代码整理成一篇Markdown格式的博客内容&#xff1a; 股票买卖的最大利润 问题描述 给定一个整数数组 prices&#xff0c;其中 prices[i] 是股票在第 i 天的价格。你可以选择在某一天买入股票&#xff0c;并在之后的某一天卖出股票。要求计算出你能够获得的最…

详解Tomcat下载安装以及IDEA配置Tomcat(2023最新)

目录 步骤一&#xff1a;首先确认自己是否已经安装JDK步骤二&#xff1a;下载安装Tomcat步骤三&#xff1a;Tomcat配置环境变量步骤四&#xff1a;验证Tomcat配置是否成功步骤五&#xff1a;为IDEA配置Tomcat 步骤一&#xff1a;首先确认自己是否已经安装JDK jdk各版本通用安…

html中的css

css &#xff08;cascading style sheets&#xff0c;串联样式表&#xff0c;也叫层叠样式表&#xff09; css规范一般约定&#xff1a; 1.存放CSS样式文件的目录一般命名为style或css。 2.在项目初期&#xff0c;会把不同类别的样式放于不同的CSS文件&#xff0c;是为了CSS编…

前端项目配置初始化

creat-vue 安装 https://cn.vuejs.org/guide/quick-start.html 官网复制npm安装语句 cmd窗口创建文件夹 npm create vue3.12.2安装webstorm启动vue项目 https://www.jetbrains.com/webstorm/download/other.html 2024.3.2.1 安装依赖 下载包node_modules package 运行服…

Java注解的原理

目录 问题: 作用&#xff1a; 原理&#xff1a; 注解的限制 拓展&#xff1a; 问题: 今天刷面经&#xff0c;发现自己不懂注解的原理&#xff0c;特此记录。 作用&#xff1a; 注解的作用主要是给编译器看的&#xff0c;让它帮忙生成一些代码&#xff0c;或者是帮忙检查…

seacmsv9注入管理员账号密码+orderby+limit

seacmsv9注入管理员账号密码 安装海洋CMS&#xff08;seacms&#xff09; 将upload文件夹里的文件全部上传至网页服务器后&#xff0c;执行以下操作: 请运行http://域名/install/index.php进行程序安装 SQL语句尝试注入 http://127.0.0.1/upload/comment/api/index.php?g…

【构建工具】Gradle Kotlin DSL中的大小写陷阱:BuildConfigField

在Android开发当中&#xff0c;BuildConfig是一个非常有用的功能&#xff0c;它允许我们在构建过程中定义常量&#xff0c;并在运行时使用它们。But&#xff01;&#xff01;当我们从传统的Groovy DSL迁移到Kotlin DSL时或者被Android Studio坑的时候&#xff0c;有一些细微的差…

AI如何改变传统工厂的生产模式?

随着第四次工业革命的浪潮席卷全球&#xff0c;制造业的数字化转型成为企业在竞争中脱颖而出的关键。过去&#xff0c;传统制造业往往依赖于大量的人工操作和低效率的管理流程&#xff0c;而如今&#xff0c;智能化、自动化、数据化已经成为未来制造业的必由之路。从车间到云端…