springboot导出excel 多个sheet导出

news2024/10/6 12:26:29

1.pom.xml

 <!--文件导出-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>

2、controller

    @GetMapping("/export")
    public void export(HttpServletResponse response) {
        //创建模拟数据
        List<User> dataList = new ArrayList<>();
        for (int i = 1; i <= 20; i++) {
            User user = new User(i,"张三" + i, 23, "男", 173);
            dataList.add(user);
        }
        //导出
        ExcelExportUtil.exportExcel(response, dataList,"用户信息.xls",9L);
    }

3、导出excel工具类

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;

public class ExcelExportUtil {

    /**
     * 导出excel 多个sheet
     * @param response  响应流
     * @param dataList  导出数据
     * @param fileName  文件名
     * @param sheetSize 每个sheet容量
     */
    public static void exportExcel(HttpServletResponse response, List<User> dataList, String fileName, Long sheetSize) {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook workbook = new HSSFWorkbook();
        try (ServletOutputStream out = response.getOutputStream()) {
            //计算要分几个sheet
            int sheetNum = dataList.size() / sheetSize.intValue();
            if (dataList.size() % sheetSize.intValue() != 0) {
                sheetNum += 1;
            }
            //依次对每个sheet页面进行操作
            for (int i = 0; i < sheetNum; i++) {
                int num = 1;
                HSSFSheet sheet = workbook.createSheet("sheet" + (i+1));
                HSSFRow row = sheet.createRow(0);
                //创建单元格并设置单元格内容
                row.createCell(0).setCellValue("学号");
                row.createCell(1).setCellValue("姓名");
                row.createCell(2).setCellValue("年龄");
                row.createCell(3).setCellValue("性别");
                row.createCell(4).setCellValue("身高");
                //i * sheetSize.intValue()  记录上次取值得位置
                for (int j = i * sheetSize.intValue(); j < dataList.size(); j++) {
                    User user = dataList.get(j);
                    //每个页面把取够sheetSize条数据即可
                    if(num < sheetSize + 1){
                        HSSFRow row1 = sheet.createRow(num);
                        row1.createCell(0).setCellValue(user.getNo());
                        row1.createCell(1).setCellValue(user.getName());
                        row1.createCell(2).setCellValue(user.getAge());
                        row1.createCell(3).setCellValue(user.getSex());
                        row1.createCell(4).setCellValue(user.getHeight());
                    }else{break;}
                    num++;
                }
            }
            response.setContentType("application/msexcel;charset=UTF-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
            workbook.write(out);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4、测试结果
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

使用Win10自带的PowerShell命令校验文件和镜像文件的Hash值(MD5、SHA1/256等)正确性

通常为了保证我们从网上下载的文件的完整性和可靠性&#xff0c;我们把文件下载下来以后都会校验一下MD5值或SHA1值&#xff08;例如验证下载的Win10 ISO镜像是否为原始文件&#xff09;&#xff0c;这一般都需要借助专门的MD5检验工具来完成。但其实使用Windows系统自带的Wind…

HTML+CSS(练习)实现棋盘电话拨号盘红绿灯

目录 棋盘HTMLCSS版本HTMLCSSJavaScript版本 电话拨号盘红绿灯 棋盘 HTMLCSS版本 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>作业2591实现棋盘效果</title><style>.container {width: 600px;height: 60…

8.FireWalld防火墙

文章目录 FireWalld防火墙概述firewalld和iptables区别firewalld区域firewalld配置查增删改 FireWalld防火墙 概述 firewalld防火墙是Centos7系统默认的防火墙管理工具&#xff0c;取代了之前的iptables防火墙&#xff0c;也 是工作在网络层&#xff0c;属于包过滤防火墙。 …

vue3 新特性详解(2)

文章目录 自定义Hook函数roRef 其它 Composition APIshallowReactive 与 shallowRefreadonly 与 shallowReadonlytoRaw 与 markRawcustomRefprovide 与 inject响应式数据的判断 Composition Api 的优势。 新的组件.FragmentTeleportSuspensevue3 一些api的转移 自定义Hook函数 …

Flink Hudi DataStream API代码示例

前言 总结Flink通过DataStream API读写Hudi Demo示例&#xff0c;主要是自己备忘用。 最开始学习Flink时都是使用Flink SQL,所以对于Flink SQL读写Hudi比较熟悉。但是对于写代码实现并不熟悉&#xff0c;而有些需求是基于Flink代码实现的&#xff0c;所以需要学习总结一下。仅…

ZYNQ无SD卡配置Linux系统到QSPI Flash和eMMC

硬件&#xff1a;黑金AX7450开发板、zynq7100、QSPI Flash、eMMC Flash 软件&#xff1a;Vivado 2017.4、Petalinux 我用了一台Windows主机&#xff0c;用于设计Vivado和烧写QSPI Flash&#xff0c;一台Ubuntu主机&#xff0c;用于运行Petalinux配置Linux系统。 硬件设计 新建…

10 工具Bootchart的使用(windows)

Bootchart的使用方法&#xff08;windows&#xff09; 下载bootchart.jar并拷贝到windows, 然后保证windows也安装了open jdk 1.8; 下载地址&#xff1a;https://download.csdn.net/download/Johnny2004/87807973 打开设备开机启动bootchart的开关: adb shell touch /data/boo…

生成VLC 及其模块的全面帮助

使用vlc.exe -H命令生成VLC帮助文件vlc-help.txt -h, --help, --no-help 打印 VLC 帮助 (可以和 --advanced 和 --help-verbose 一起使用) (默认禁用) -H, --full-help, --no-full-help VLC 及…

如何创造一个属于自己的springboot stater

如何创造一个属于自己的springboot stater 什么是staterstater是怎么实现注入进来的如何进行约定 基于上述理论的demo实现功能代码目录核心实现spring.factoriesSpringMessageSubscribe&#xff08;扫描所有Subscribe注解生成消息订阅&#xff09;基于Redis的消息订阅基于redis…

对封装好的Vue组件库进行打包,并发布到npm上

1. 新建vue 项目 并且在根目录创建两个文件夹 packages和examples。 packages&#xff1a;用于存放所有的组件 examples&#xff1a;用于进行测试组件&#xff0c;把src改为examples 2.配置vue.config.js 并设置入口文件 如果没有vue.config.js文件 就需要在项目根目录下创…

数说故事@FBIC丨首发食饮SMI社媒心智品牌榜,为品牌支招紧跟健康新风尚

第八届Foodaily创博会&#xff08;FBIC全球食品饮料创新大会&#xff09;于5月14-16日在上海跨国采购会展中心圆满落幕&#xff0c;呈现了一场食品饮料行业盛会。数说故事与众多食饮健康品牌一起&#xff0c;走过了一段大数据AI加持的创新之旅。 数说故事VP孙淑娟Jessie受邀分享…

Android APP 集成系统签名

由于android 系统权限限制&#xff0c;很多时候普通APP权限无法完成&#xff0c;需要系统APP才有足够的权限&#xff0c; 比如&#xff1a;安装、卸载应用&#xff0c;重启设备&#xff0c;恢复出厂设置&#xff0c;以及设置里面的一些功能&#xff0c;都是需要系统权限才能调…

【WLAN网络故障,带你搞定它!】

01 无线网卡搜索不到 AP的无线信号 01 问题现象 无线网卡搜索不到 AP 的无线信号 02 问题分析 无线网卡搜索不到 AP 的信号 ,原因可以从两方面着手&#xff1a; 1.无线网卡 AP本身 在遇到该问题的时候&#xff0c;我们可以从以上两个方面进行处理。 03 处理过程 1.无线…

Python GUI编程:使用wxPython处理长文本

这段代码的应用场景有&#xff1a; 在文本编辑器和IDE等应用程序中&#xff0c;可以使用这个示例代码来处理长文本&#xff0c;以便用户更好地查看和编辑文本。在数据分析和科学计算等领域中&#xff0c;可以使用这个示例代码来显示和处理大量的数据和结果。在日志分析和系统监…

解决方案 TestCenter自动测试软件平台

方案概述 TestCenter是一个专为加速您的测试系统软件开发而设计的自动测试系统软件平台&#xff0c;主要应用于测试程序的开发、运行和管理。TestCenter实现了对测试资源管理、测试程序开发与调试、测试数据管理以及测试程序发布等功能的无缝集成和统一部署&#xff0c;这将帮…

Google I/O 2023 推出Flutter 3.10 快来看看都有哪些变化

本文首发自[慕课网] &#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"及“慕课网公众号”&#xff01; 作者&#xff1a; CrazyCodeBoy |慕课网名师 今年的Google I/O满满的 AI与狠活&#xff0c;而且还推出 Flutter 3…

Flutter一天一控件之ListTile(列表的实现)

ListTile简介 Flutter中的ListTile控件是一种常用的列表项控件&#xff0c;它可以用于显示列表中的每一个项&#xff0c;通常包含标题、副标题、图标等内容。ListTile控件的外观和行为类似于Android中的ListView中的列表项。 一个简单的ListTile示例&#xff1a; ListTile(l…

大流量卡介绍:网上的大流量卡都是怎么来的?

大流量卡介绍&#xff0c;你知道网上的大流量卡都是怎么来的&#xff1f; 其实&#xff0c;网上29元155G、39元180G的优惠套餐&#xff0c;本身都是我们常见的流量卡如电信星卡、联通王卡、移动花卡等等&#xff0c;之所以这么便宜&#xff0c;只不过运营商在这些套餐上面增加…

【新星计划】数据库 排名函数 初识

数据库 排名函数 初识 查询排序初识排名函数row_number()rank()dense_rank()ntile()percent_rank() 开窗函数为聚合函数使用开窗函数 小结 查询排序 在日常工作中&#xff0c;我们对所有需要的数据都会进行一个排序操作&#xff0c;以获得我们最需要的数据。 排序指令 order …

Unreal Niagara粒子入门1

记录下学习Niagara粒子的过程&#xff0c;这次调的是比较简单的一个效果&#xff1a; 使用了随粒子生命的缩放、打开速率解算、基本的发射器和Niagara容器。 1.创建Niagara Niagara中&#xff0c;发射器和NiagaraSystem文件是可以分开创建的&#xff1a; 通常直接点Niagara…