SpringBoot动态导出数据为excel

一、概述

近期有个需求是写个java程序从数据库导出excel表格,我寻思数据库本身不就有这个操作吗。略过中间的各种疑问,最后还是写出来了这么个东西。

由于时间仓促,粗略浏览了这些官网。但并不能让我短暂学习(其实就是抄袭)后快速输出一个解决眼下问题的程序。所以咱也没想着去官网花太多时间。

查询了很多博客,poi、easy-poi、easy-excel差不多就这三个吧。并未找到文章能解决我的需求,其实我的需求只是无实体类导出excel,但看的好多博客基本都是注解式操作或pojo.Class映射并不适合我的业务场景,不过好在最后找了一篇poi的博客成功解决了我的痛点。

灵感来源:https://blog.csdn.net/weixin_43100896/article/details/91352208

仓库地址:https://gitee.com/awthirdly/test-poi

no more nonsense,show u my code.

二、pom依赖

个人测试用的swagger。ps:swagger3的路径为host:port/swagger-ui/

<dependencies>
    <!--
            A.SpringBoot-starter
            B.SpringBoot-starter-jdbc
            C.SpringBoot-starter-web

            1.mysql-connector
            2.swagger3
            3.poi
        -->

    <!--[A.SpringBoot-starter]-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!--[B.SpringBoot-starter-jdbc]-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <!--[C.SpringBoot-starter-web]-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


    <!--[1.mysql-connector]-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!--[2.swagger3]-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>

    <!--[3.poi]-->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.0</version>
    </dependency>

</dependencies>

三、SpringBoot配置文件

就一个端口号

server:
  port: 14382

四、代码

注意:这里的代码全是在一个类(DataExportUtil)中,我这里拆分开分别说明作用。

内部类

主要用于封装数据表的表结构,后续需要更多字段信息可以在这里添加,并在查询表结构方法中封装对应的值。这里暂时封装了3个,但也只是用到了一个列名。

/**
 * 表字段属性
 * @author Awthirdly
 * @date 2022/3/14
 */
private static class TableData {
   
    /**
     * 列名
     */
    private String columnName;

    /**
     * 数据类型
     */
    private String dataType;

    /**
     * 列注释
     */
    private String columnComment;

    public TableData(String columnName, String dataType, String columnComment) {
   
        this.columnName = columnName;
        this.dataType = dataType;
        this.columnComment = columnComment;
    }

    @Override
    public String toString() {
   
        return "TableField{" +
            "columnName='" + columnName + '\'' +
            ", dataType='" + dataType + '\'' +
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值