iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot+Hutool+thymeleaf完成导出Excel的实现方法
  • 146
分享到

SpringBoot+Hutool+thymeleaf完成导出Excel的实现方法

2024-04-02 19:04:59 146人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1、引入依赖2、创建实体类3、创建导出接口4、创建html5、测试导出导出excel的框架有很多种,POI相对来说比较老了,很多Excel框架底层都是POI、有EasyPoi、E

导出excel框架有很多种,POI相对来说比较老了,很多Excel框架底层都是POI、有EasyPoi、EasyExcel、包括Hutool当中封装的也是POI。唯一不同的是Hutool工具包不局限与做Excel、他里面封装了大量的util,一般现在开发都会用到糊涂。

本篇示例当中不仅仅有后端,而且还提供了前端html,html当中利用js将后端 输出流直接下载为文件。

实现的效果如下:一点击导出文件直接下载到本地。应该现在导出普遍都是这样。

1、引入依赖

这里用到了lombok,就是简化实体类当中的get、set方法的。

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 导出重要依赖|截止2022-03-09 hutool和poi-ooxml依赖是最新的 -->
<!--POI组件 设置字体样式-->
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml</artifactId>
	<version>5.2.1</version>
</dependency>
<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-all</artifactId>
	<version>5.7.22</version>
</dependency>

2、创建实体类

用于导出测试使用。

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class User {
    private String name;
    private Integer age;
    private String sex;

}

3、创建导出接口

导出主要是围绕ExcelWriter类来进行开发的。

hutool在线apihttps://apidoc.gitee.com/dromara/hutool/

我大概看了一眼,根据api其实任何复杂的Excel导出都可以做出来,API可以设置指定单元格样式字体、还有指定行的样式字体、合并单元格等等…

在这里插入图片描述

import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.gzl.cn.hutoolexcel.domain.User;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.springframework.stereotype.Controller;
import org.springframework.WEB.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.Http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.NIO.charset.StandardCharsets;
import java.util.*;

@Controller
@RequestMapping("/test")
public class TestController {

    
    @PostMapping("/export")
    public void export2(HttpServletResponse response, String startDate, String endDate) {
        List<User> list = data();

        // 1.创建ExcelWriter
        // 通过工具类创建writer,默认创建xls格式
        ExcelWriter excelWriter = ExcelUtil.getWriter();
        //创建xlsx格式的
        //ExcelWriter writer = ExcelUtil.getWriter(true);

        // 2.设置一级标题
        // 合并单元格后的标题行,使用默认标题样式,从0开始
        excelWriter.merge(2, "学生记录");
        // 设置表头高度
        excelWriter.setRowHeight(0, 25);

        // 3.设置二级标题
        excelWriter.addHeaderAlias("name", "姓名");
        excelWriter.addHeaderAlias("age", "年龄");
        excelWriter.addHeaderAlias("sex", "性别");

        // 4.设置表头字体
        // 获取表头样式,获取样式后可自定义样式
        CellStyle headCellStyle = excelWriter.getHeadCellStyle();
        // 获取单元格样式
//        CellStyle cellStyle = excelWriter.getCellStyle();
        // 设置内容字体
        Font font = excelWriter.createFont();
        // 设置字体
        font.setFontName("宋体");
        // 设置字体大小
        font.setFontHeightInPoints((short) 14);
        // 字体加粗
        font.setBold(true);
        // 字体颜色
        font.setColor(Font.SS_NONE);
        headCellStyle.setFont(font);

        // 5.设置单元格宽度
        int[] arr = {30, 30, 25};
        for (int i = 0; i < arr.length; i++) {
            excelWriter.setColumnWidth(i, arr[i]);
        }

        // 只导出有别名的字段
        excelWriter.setOnlyAlias(true);
        // 一次性写出内容,使用默认样式,强制输出标题
        excelWriter.write(list, true);
        // 从第几行写入
//        excelWriter.setCurrentRow(1);
//        excelWriter.writeRow(data());
        // 设置某个单元格的样式
//        CellStyle orCreateCellStyle = excelWriter.getOrCreateCellStyle(0, 1);
        // 设置某行的样式
//        excelWriter.setRowStyle();

        try {
            String fileName = URLEncoder.encode("统计" + startDate + "日到" + endDate + "日", StandardCharsets.UTF_8.name());
            response.setContentType("application/vnd.openxmlfORMats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            // 将Excel Workbook刷出到输出流
            excelWriter.flush(response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException("文件写入失败!");
        }
        //关闭流
        excelWriter.close();
    }

    
    public List<User> data() {
        List<User> users = new ArrayList<>();
        users.add(new User("张三", 2, "男"));
        users.add(new User("李四", 2, "女"));
        return users;
    }
}

4、创建html

在templates下创建index.html,这样启动项目后直接访问8080端口,他会直接调到index.html。

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://ajax.aspnetcdn.com/ajax/Jquery/jquery-3.5.1.min.js"></script>
</head>
<body>
<input type="button" id="clickme" value="导出"/>
</body>
<script type="text/javascript">
    function postExcelFile(params, url) { //params是post请求需要的参数,url是请求url地址
        var form = document.createElement("form");
        form.style.display = 'none';
        form.action = url;
        form.method = "post";
        document.body.appendChild(form);

        for (var key in params) {
            var input = document.createElement("input");
            input.type = "hidden";
            input.name = key;
            input.value = params[key];
            form.appendChild(input);
        }

        form.submit();
        form.remove();
    }

    //点击导出按钮导出excel表格
    clickme.onclick = function () {
        var params = {};
        params.startDate = '2022-01-01';
        params.endDate = '2022-03-03';
        postExcelFile(params, "/test/export");
    }

</script>
</html>

5、测试导出

在这里插入图片描述

到此这篇关于SpringBoot+Hutool+thymeleaf完成导出Excel的文章就介绍到这了,更多相关SpringBoot导出Excel内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot+Hutool+thymeleaf完成导出Excel的实现方法

本文链接: https://www.lsjlt.com/news/142078.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot+Hutool+thymeleaf完成导出Excel的实现方法
    目录1、引入依赖2、创建实体类3、创建导出接口4、创建html5、测试导出导出Excel的框架有很多种,POI相对来说比较老了,很多Excel框架底层都是POI、有EasyPoi、E...
    99+
    2024-04-02
  • Springboot实现导入导出Excel的方法
    目录一、添加poi的maven依赖二、自定义注解(Excel属性标题、位置等)三、CustomExcelUtils编写四、定义导出实体类五、Controller层代码编写一、添加po...
    99+
    2024-04-02
  • springboot layui hutool Excel导入如何实现
    这篇文章主要介绍了springboot layui hutool Excel导入如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot layui&n...
    99+
    2023-06-29
  • SpringBoot集成POI实现Excel导入导出的示例详解
    目录知识准备什么是POIPOI中基础概念实现案例Pom依赖导出Excel导入Excel示例源码知识准备 需要了解POI工具,以及POI对Excel中的对象的封装对应关系。 什么是PO...
    99+
    2024-04-02
  • SpringBoot+easypoi实现数据的Excel导出
    本文实例为大家分享了SpringBoot+easypoi实现数据的Excel导出的具体代码,供大家参考,具体内容如下 maven <dependency> ...
    99+
    2024-04-02
  • SpringBoot+EasyPoi实现excel导出功能
    在实际项目开发中,对于Excel的导入导出还是很常见的需求,比如说将数据根据模板批量导入到数据库中,以及将数据库中的数据批量导出陈Excel的形式 现有需求: 根据检索条件查询列表并...
    99+
    2024-04-02
  • 怎么用Java Hutool工具实现验证码生成及Excel文件的导入和导出
    这篇文章主要介绍“怎么用Java Hutool工具实现验证码生成及Excel文件的导入和导出”,在日常操作中,相信很多人在怎么用Java Hutool工具实现验证码生成及Excel文件的导入和导出问题上存在疑惑,小编查阅...
    99+
    2023-06-21
  • 《springboot中实现excel表格导出》
    《springboot中实现excel表格导出》 简介 在Spring Boot中,实现Excel表格导出的方式有很多种,以下是几种常见的方法: 使用Apache POI:Apache POI是一个开源的Java API,用于处理Micro...
    99+
    2023-08-23
    spring boot excel java
  • MySQL实现导出excel的方法分析
    本文实例讲述了MySQL实现导出excel的方法。分享给大家供大家参考,具体如下: MySQL 要导出成 excel 文件很简单,执行类似这样的命令: select * from 某个表 in...
    99+
    2024-04-02
  • mysql使用sql导出成excel的方法
    这篇文章主要介绍“mysql使用sql导出成excel的方法”,在日常操作中,相信很多人在mysql使用sql导出成excel的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • java中的export方法实现导出excel文件
    目录1.export函数2.导出列名3.export实现方法4.前端对接5.前端代码1.export函数 //导出文件接口 public String export(){ retur...
    99+
    2024-04-02
  • elementUI+Springboot实现导出excel功能的全过程
    目录前言步骤依赖包element表格table引入包编写方法完整实例最终导出结果结语前言 在前面,我们其实已经完成了elementUI+springboot的导入功能springbo...
    99+
    2024-04-02
  • SpringBoot+Vue实现EasyPOI导入导出的方法详解
    目录前言一、为什么做导入导出二、什么是 EasyPOI三、项目简介项目需求效果图开发环境四、实战开发 核心源码前端页面后端核心实现五、项目源码小结前言 Hello~ ,前后端分离系列...
    99+
    2024-04-02
  • vue中使用js-xlsx导出excel的实现方法
    目录安装第一种第二种第三种安装 npm install --save xlsx file-saver 在组件里面引入 import FileSaver from 'file-save...
    99+
    2024-04-02
  • Java使用POI实现导出Excel的方法详解
    目录一、前景二、概念2.1. 简介2.2.Excel版本和相关对象2.3.WorkBook2.4.POI依赖三、POI - 写3.1.代码示例3.2. 性能对比3.3. 测试rowA...
    99+
    2022-11-13
    Java POI导出Excel Java POI Excel Java 导出Excel Java POI
  • navicat导出查询结果数据成excel的方法
    这篇文章主要介绍navicat导出查询结果数据成excel的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Navicat作为一个数据库管理软件,查询的结果很有参考意义,能够直接导...
    99+
    2024-04-02
  • SpringBoot整合EasyExcel实现Excel表格导出功能
    目录栗子1.组件介绍2.配置文件SpringBoot项目pom.xml3.项目代码项目结构ExportController.javaMock.javaCitySheet.javaCo...
    99+
    2024-04-02
  • JS实现将数据导出到Excel的方法详解
    修改之前项目代码的时候,发现前人导出excel是用纯javascript实现的。并没有调用后台接口。 之前从来没这么用过,记录一下。以备不时之需。 方法一: 将table标签,包括t...
    99+
    2024-04-02
  • 使用php 实现生成Excel文件并导出
    在现在的项目里,不管是电商项目还是别的项目,在管理端都会有导出的功能,比方说订单表导出,用户表导出,业绩表导出。这些都需要提前生成excel表,然后在导出,实际上是在代码里生成一张excel表,然后通...
    99+
    2023-09-02
    excel php 开发语言
  • async-excel实现多sheet异步导出方法详解
    【async-excel组件开源地址】 业务上如果需要单sheet导出,有时有需要将多个单sheet导出合并到一个excel里面此时,代码写起来也是颇为蛋碎,但是在async-exc...
    99+
    2022-12-23
    async-excel多sheet异步导出 async-excel异步导出
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作