Java,SpringBoot中导出excel文件

依赖

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

代码实现细节

package com.lyh.mp.utils;import com.lyh.mp.entity.User;
import org.apache.poi.hpsf.DocumentSummaryInformation;
import org.apache.poi.hpsf.SummaryInformation;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;public class POIUtils {public static ResponseEntity<byte[]> student2Excel(List<User> list){//1. 创建一个 Excel 文档HSSFWorkbook workbook = new HSSFWorkbook();//2. 创建文档摘要workbook.createInformationProperties();//3. 获取并配置文档信息DocumentSummaryInformation docInfo = workbook.getDocumentSummaryInformation();//文档类别docInfo.setCategory("学生信息");//文档管理员docInfo.setManager("huanji");//设置公司信息docInfo.setCompany("www.huanji.org");//4. 获取文档摘要信息SummaryInformation summInfo = workbook.getSummaryInformation();//文档标题summInfo.setTitle("学生信息表");//文档作者summInfo.setAuthor("huanji");// 文档备注summInfo.setComments("本文档由 huanji 提供");//5. 创建样式//创建标题行的样式HSSFCellStyle headerStyle = workbook.createCellStyle();headerStyle.setFillForegroundColor(IndexedColors.YELLOW.index);headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//创建日期单元格的样式HSSFCellStyle dateCellStyle = workbook.createCellStyle();dateCellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));HSSFSheet sheet = workbook.createSheet("学生信息表");//设置列的宽度sheet.setColumnWidth(0, 5 * 256);sheet.setColumnWidth(1, 12 * 256);sheet.setColumnWidth(2, 10 * 256);sheet.setColumnWidth(3, 5 * 256);sheet.setColumnWidth(4, 12 * 256);sheet.setColumnWidth(5, 20 * 256);sheet.setColumnWidth(6, 10 * 256);sheet.setColumnWidth(7, 10 * 256);sheet.setColumnWidth(8, 16 * 256);sheet.setColumnWidth(9, 12 * 256);sheet.setColumnWidth(10, 15 * 256);sheet.setColumnWidth(11, 20 * 256);sheet.setColumnWidth(12, 16 * 256);sheet.setColumnWidth(13, 14 * 256);sheet.setColumnWidth(14, 14 * 256);sheet.setColumnWidth(15, 12 * 256);sheet.setColumnWidth(16, 8 * 256);sheet.setColumnWidth(17, 20 * 256);sheet.setColumnWidth(18, 20 * 256);sheet.setColumnWidth(19, 15 * 256);sheet.setColumnWidth(20, 8 * 256);sheet.setColumnWidth(21, 25 * 256);sheet.setColumnWidth(22, 14 * 256);sheet.setColumnWidth(23, 15 * 256);sheet.setColumnWidth(24, 15 * 256);//6.创建标题行HSSFRow r0 = sheet.createRow(0);HSSFCell c0 = r0.createCell(0);c0.setCellValue("ID");c0.setCellStyle(headerStyle);HSSFCell c1 = r0.createCell(1);c1.setCellStyle(headerStyle);c1.setCellValue("名字");HSSFCell c2 = r0.createCell(2);c2.setCellStyle(headerStyle);c2.setCellValue("年龄");HSSFCell c3 = r0.createCell(3);c3.setCellStyle(headerStyle);c3.setCellValue("email");HSSFCell c4 = r0.createCell(4);c4.setCellStyle(headerStyle);c4.setCellValue("创建时间");HSSFCell c5 = r0.createCell(5);c5.setCellStyle(headerStyle);c5.setCellValue("更新时间");for(int i = 0; i < list.size(); i++){User s = list.get(i);HSSFRow row = sheet.createRow(i + 1);row.createCell(0).setCellValue(s.getId());row.createCell(1).setCellValue(s.getName());row.createCell(2).setCellValue(s.getAge());row.createCell(3).setCellValue(s.getEmail());// 设置时间格式HSSFCellStyle cellStyle = workbook.createCellStyle();HSSFDataFormat dataFormat = workbook.createDataFormat();cellStyle.setDataFormat(dataFormat.getFormat("yyyy-MM-dd HH:mm:ss"));HSSFCell createTimeCell = row.createCell(4);createTimeCell.setCellValue(s.getCreateTime());createTimeCell.setCellStyle(cellStyle);HSSFCell updateTimeCell = row.createCell(5);updateTimeCell.setCellValue(s.getUpdateTime());updateTimeCell.setCellStyle(cellStyle);}// 将Excel数据写入字节数组ByteArrayOutputStream baos = new ByteArrayOutputStream();HttpHeaders headers = new HttpHeaders();try {//设置到处文件的文件名,病指定编码headers.setContentDispositionFormData("attachment", new String("学生信息表.xls".getBytes("UTF-8"), "ISO-8859-1"));headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);// 将Excel数据写入字节数组workbook.write(baos);} catch (IOException e) {e.printStackTrace();}// 返回包含Excel 数据字节数组的ResponseEntity对象return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED);}}

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

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

相关文章

docker (九)-进阶篇-docker-compos最佳实践部署zabbix

一 部署docker环境 关闭防火墙、selinux、开启docker&#xff0c;并设置开机自启动 注意点&#xff1a;docker部署的时候&#xff0c;bip要指定&#xff0c;不然会导致虚拟机ip和容器ip冲突&#xff0c;ssh连不上虚拟机 部署请参考 docker &#xff08;二&#xff09;-yum…

为什么程序员不能一次性写好,需要不停改bug?

写程序不是一次性完成的原因有很多&#xff0c;其中包括了解不充分、需求变更、复杂性、人为因素等多个方面的原因。 需求不明确&#xff1a; 在项目一开始&#xff0c;对需求可能存在歧义或不完整的理解。有时候&#xff0c;业务需求会在开发过程中发生变化&#xff0c;导致…

route命令学习总结

route命令学习总结 参考链接: 1、route指令使用详解 https://blog.csdn.net/justlpf/article/details/1290452842、route命令详解 https://www.kancloud.cn/chunyu/php_basic_knowledge/2106519 route命令用于显示和操作IP静态路由表。用于跨网段之间通信 route命令主要用于…

前端登录随机数字字母组合验证

背景&#xff1a;系统登录页面只有用户名密码一种校验方式&#xff0c;没有验证码&#xff0c;可能导致暴力破解。 实现逻辑&#xff1a; <el-form-item prop"code"><el-inputv-model"loginForm.captchaCode"auto-complete"off"placeho…

linux 测试网络速率

1. ethtool ethtool是很强大的查询网卡&#xff08;嵌入式称为phy芯片&#xff09;配置的工具&#xff0c;几乎phy芯片芯片手册寄存器能配置的选项&#xff0c;ethtool都能查询到&#xff1b;嵌入式调试phy芯片的时候经常用到该命令&#xff1b;最简单的指令如下 ethtool eth0…

函数——递归3(c++)

求10097……41的值 问题描述 求 10097 ⋯ 41 的值。 输入 无。 输出 输出一行&#xff0c;即求到的和。 #include <bits/stdc.h> using namespace std; int aaa(int,int,int); int main() {cout<<aaa(1,100,0);return 0; } int aaa(int i,int n,int sum) {if…

Pandas 合并DataFrame中一行的所有字符串

import pandas as pd df pd.DataFrame({ col1: [Hello, World, ], col2: [from, of, the], col3: [Pandas, Data, World], col4: [!, !, !] }) # 自定义一个函数来合并一行的所有字符串&#xff0c;接收一行数据作为输入 def merge_row_strings(row): # 使用join方…

YOLOV8改进系列指南

基于Ultralytics的YOLOV8改进项目.(69.9) 为了感谢各位对V8项目的支持,本项目的赠品是yolov5-PAGCP通道剪枝算法.具体使用教程 专栏改进汇总 二次创新系列 ultralytics/cfg/models/v8/yolov8-RevCol.yaml 使用(ICLR2023)Reversible Column Networks对yolov8主干进行重设计,里…

Go应用性能分析实战

Go很适合用来开发高性能网络应用&#xff0c;但仍然需要借助有效的工具进行性能分析&#xff0c;优化代码逻辑。本文介绍了如何通过go test benchmark和pprof进行性能分析&#xff0c;从而实现最优的代码效能。原文: Profiling Go Applications in the Right Way with Examples…

【Vuforia+Unity】AR03-圆柱体物体识别

1.创建数据库模型 这个是让我们把生活中类似圆柱体和圆锥体的物体进行AR识别所选择的模型 Bottom Diameter:底部直径 Top Diameter:顶部直径 Side Length:圆柱侧面长度 请注意&#xff0c;您不必上传所有三个部分的图片&#xff0c;但您需要先为侧面曲面关联一个图像&#…

工具分享:在线键盘测试工具

在数字化时代&#xff0c;键盘作为我们与计算机交互的重要媒介之一&#xff0c;其性能和稳定性直接影响到我们的工作效率和使用体验。为了确保键盘的每个按键都能正常工作&#xff0c;并帮助用户检测潜在的延迟、连点等问题&#xff0c;一款优质的在线键盘测试工具显得尤为重要…

Java后端底座从无到有的搭建(随笔)

文章目录 开发模式的演变草创时期1.0时期&#xff08;基座时期&#xff09;1.1时期&#xff08;低代码时期&#xff09;2.0时期&#xff08;无代码时期&#xff09; 前言&#xff1a;本文是笔者在初创公司&#xff0c;一年多来Java后端服务底座搭建过程的总结&#xff0c;如有不…

访问网站被限制

访问网站被限制是指在某些情况下&#xff0c;用户无法正常访问特定的网站或者网页。这种限制可能是由多种原因引起的&#xff0c;包括以下几个方面&#xff1a; 网络层面的限制&#xff1a;有些网站可能被网络服务提供商&#xff08;ISP&#xff09;或者网络管理员屏蔽&#xf…

四旋翼无人机控制-零散笔记整理

四旋翼无人机控制-零散笔记整理 说明仿真框架 说明 这是低创文章&#xff0c;本意是整理本科留下来的一堆零碎的纸质笔记&#xff0c;整理完就把纸质的扔了。所以前后不连贯&#xff0c;也可能有错误&#xff0c;图片都是直接拍的笔记照片&#xff0c;很丑。如果想系统学习的可…

【C++】STL- > string类(超详解!!!)

文章目录 前言1、string类的出现1.1 C语言中的字符串1.2 平时使用 2. 标准库中的string类2.1 string类的常用文档&#xff08;重要&#xff09;&#xff01;&#xff01;&#xff01;&#xff01;2.2 string类的常用接口说明(接口原型我这里就不展示了&#xff0c;文档中都有可…

前后端分离(delivery-management)部署文档

1. 前端项目:delivery-management 1.1. 前端项目打包 执行命令:npm run build 或者yarn run build,生成dist目录。 构建流程如下图: 1.2. 文件上传 将打包好的前端项目(dist目录),上传到服务器,并拷贝到nginx安装目录html目录下。 执行上传命令(sftp):put -r E:\…

展示用HTML编写的个人简历信息

展示用HTML编写的个人简历信息 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…

MySQL中Binlog日志的使用

一、Binary Log介绍 MySQL 的二进制日志&#xff08;Binary Log&#xff09;是一种记录数据库更改操作的日志文件&#xff0c;它包含了所有对数据库执行的插入、更新、删除等操作的详细信息。二进制日志是 MySQL 数据库系统的核心组件之一&#xff0c;具有以下特点和作用&…

Go 语言一些常用语法编写和优化指南

Go 语言以其简洁的语法和强大的并发性能而受到开发者的喜爱。然而&#xff0c;为了充分利用 Go 的潜力&#xff0c;我们需要了解如何优化 Go 程序。本文将介绍一些常见的 Go 语言优化技巧&#xff0c;并通过实际例子进行说明。 ## 1. 利用 sync.Pool 减少内存分配 在 Go 中&a…

Windows 自带的 Linux 子系统(WSL)安装与使用

WSL官网安装教程&#xff1a; https://learn.microsoft.com/zh-cn/windows/wsl/install Windows 自带的Linux子系统&#xff0c;比用VM什么的香太多了。可以自己看官方教程&#xff0c;也可以以下步骤完成。 如果中间遇到我没遇到的问题百度&#xff0c;可以在评论区评论&#…