【Easyexcel】根据模板导出excel

2023-10-27

主要实现通过模板,导出对应数据,生成excel。

1.版本:

Maven: com.alibaba:easyexcel:3.0.5

2.代码实现

ExportExcelBase:是定义一些非列表的字段,如下:导出时间等
在这里插入图片描述

工具类:

;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.List;

/**
 * @author fei.chen
 * @description: 导出excel工具类
 * @date 2022/12/20下午 5:57
 */
public class EasyExcelUtil {

    /**
     *  @param resourceAsStream  模板流
     * @param fileName 文件名
     * @param data 导出数据
     * @param exportExcelBase 基础对象
     * @param response
     */
    public static void excel(InputStream resourceAsStream, String fileName, List data,
                             ExportExcelBase exportExcelBase, HttpServletResponse response) {
        try {
            ServletOutputStream out = response.getOutputStream();
            //设置文件类型
            response.setContentType("application/vnd.ms-excel");
            //设置编码格式
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");

            //创建excel
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(resourceAsStream).build();
            // 创建sheet
            WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
            FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();

            excelWriter.fill(data, fillConfig, writeSheet);
            excelWriter.fill(exportExcelBase, writeSheet);
            //填充完成
            excelWriter.finish();
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

调用:

respList 是你要导出的数据字段 集合。

        InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("excel/信息.xlsx");

        ExportExcelBase exportExcelBase = ExportExcelBase.builder().
                exportUserName("小飞").
                exportUserCompany("公司部1").
                exportDate(DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss")).build();
        EasyExcelUtil.excel(resourceAsStream,"信息",respList,exportExcelBase,response);

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class AreasAccessInfoExportResp {
    /**
     * 序号
     */
    private Integer orderNum;

    /**
     *  名称
     */
    private String name;

 
}

public class ExportExcelBase {

    /**
     * 导出人
     */
    private String exportUserName;

    /**
     * 导出单位
     */
    private String exportUserCompany;

    /**
     * 导出时间
     */
    private String exportDate;

}

ok完事。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Easyexcel】根据模板导出excel 的相关文章

  • CompletableFuture 强制重用线程

    我正在批判性地利用 CompletableFuture delayedExecutor 1 TimeUnit MILLISECONDS execute gt 根据我在网上阅读的内容 每次调用都使用一个新线程是很常见的 我想知道是否有办法重用
  • Amazon SQS 旧配置文件格式警告

    我正在将消息发布到 Amazon SQS 队列 启动时 我在日志中收到以下警告 http nio 9090 exec 2 BasicProfileConfigLoader The legacy profile format requires
  • 在jodatime中计算一个月的周数

    jodatime 可以计算一个月的周数吗 我需要这样的东西 月份 七月 第 27 年的一周 1 7 七月 第 28 年的一周 9 14 七月 第 29 年的一周 16 21 七月 第 30 年的一周 23 31 七月 月份 八月 第 31
  • 从 VBA 打开工作簿并禁用 Workbook_Open() 代码?

    我正在使用 VBA 打开电子表格 并且一些工作簿包含在调用 Workbook Open 时开始执行的代码 如何使用 VBA 打开工作簿但停止代码自动执行 我只是打开工作簿来查看工作表中的公式 我不想执行任何代码 你想试一下吗禁用在 VBA
  • EventQueue.invokeLater vrs SwingUtilities.invokeLater

    有人可以强调这两者之间的差异以及两者都是必需的实例吗 我有一个可以互换使用两者的应用程序 但想知道其中一个是否比另一个更好 显然他们都接受Runnable object 对我来说 我想我可以使用我喜欢的那个 为什么这两个相似的功能在不同的类
  • 如何将背景图像设置到 JPanel 中的 JTextArea

    我想在JTextArea 我在谷歌上查找过 但没有结果 背景可能是一个标志 我也想知道如何设置背景的分辨率 我的包中只有一门课 我有一个 MySQL 连接器驱动程序作为参考库 我的工作台是 Eclipse 使用 Fat jar 插件导出 j
  • 在准备好的语句中使用“like”通配符

    我正在使用准备好的语句来执行 mysql 数据库查询 我想实现基于某种关键字的搜索功能 为此我需要使用LIKE关键字 我知道的就这么多 我以前也使用过准备好的语句 但我不知道如何使用它LIKE因为从下面的代码中我将在哪里添加 keyword
  • JTable 使用行号?

    我正在创建一个程序 其工作原理如下Microsoft Excel 在JAVA中 我的问题是如何将行号放在每行旁边JTable 我已经看到它在其他 Java 程序中工作 我只是不知道如何将它包含在我的程序中 谷歌给了我这个网站 http ti
  • Android - 更改 ImageButton 上的发送图标的颜色

    如何更改发送图标的默认颜色ImageButton
  • 将变量从一个 jsp 发送到另一个 jsp

    我有一个 JSP 文件jsp 1 jsp和另一个 JSP 文件jsp 2 jsp 我已经包括了jsp 2 jsp in jsp 1 jsp using 现在我需要某个元素上的单击事件 在该事件中 我想将字符串变量传输到包含的 jsp 中 假
  • 如何设置鼠标监听器的优先级

    我有一个带有列表和按钮的面板 名单已定MouseAdapter with mouseClick 我添加到面板MouseAdapter with mousePressed and mouseReleased and MouseMotionAd
  • 是否有更现代的面向对象版本的“让我们构建一个编译器”? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有更现代的 也许是面向对象的 相当于 Jack Crenshaw 的 让我们构建一个编译器 http
  • 使用Optional进行空检查

    我想使用可选实用程序在 JDK8 中执行空检查 这是我正在编写的代码 它给了我一个错误 java util Optional stringToUse java util Optional of childPage getContentRes
  • 如何安装“Android 支持库”以将 Gluon Mobile 应用程序部署到 Android?

    我想使用 Gluon Mobile 框架开发一个 Android 应用程序 我在 Netbeans IDE 中安装了 Gluon 插件 创建了一个示例项目并成功构建了它 现在我想将该应用程序部署到 Android 设备 我指的是在线文档 1
  • Python Blowfish 加密

    由于我对 Java 的了解不完整 我正在努力将此加密代码转换为 Python 代码 两者应该得到完全相同的结果 帮助将不胜感激 Java函数 import javax crypto Cipher import javax crypto sp
  • 使用Java 8开发的程序可以在Java 7上运行吗?

    我有点困惑 Oracle 表示 Java 8 与 Java 7 向后 高度兼容 但是 Java 8 程序有什么可能性可以在 Java 7 上成功运行 SE EE 呢 如果第一点为真 Java 8 应用程序将在 Java 7 服务器支持上部署
  • Guava Splitter/Joiners 每次使用时都应该创建吗?

    Guava 包含用于拆分和连接字符串的实用程序 但它需要实例化 Splitter Joiner 对象才能执行此操作 这些是小对象 通常仅包含要分割 合并的字符 维护对这些对象的引用以便重用它们是一个好主意 还是在需要它们时创建它们并让它们被
  • 如何在JavaFX中获得狭窄的进度条?

    正如标题所说 我需要制作一个细进度条 我用过这个 progressBar setMaxHeight 0 1 progressBar setPrefHeight 0 1 但这行不通 有人有想法吗 你必须搞乱样式才能让它变小 我真的建议看看ca
  • 在 OpenCV 中将 `BufferedImage` 转换为 `Mat`

    我怎样才能转换BufferedImage to a Mat in OpenCV 我正在使用 JAVA 包装器OpenCV not JavaCV 由于我是新手OpenCV我在理解如何做时遇到一些问题Mat works 我想做这样的事情 基于
  • Java 错误:默认构造函数未定义隐式超级构造函数

    我有一些简单的 Java 代码 其结构与此类似 abstract public class BaseClass String someString public BaseClass String someString this someSt

随机推荐

  • SLA(服务等级协议)

    SLA Service Level Agreement的缩写 意思是服务等级协议 是关于网络服务供应商和客户间的一份合同 其中定义了服务类型 服务质量和客户付款等术语 定义SLA Service Level Agreement的缩写 意思是
  • [递归与分治算法][BOJ]1032-邮局选址问题

    其实这个题和上一个输油管道问题是异曲同工 只不过这个题目要分别求出横坐标和纵坐标的中位数 include
  • 基于预测的云资源弹性伸缩框架 MagicScaler,实现“高QoS,低成本”双丰收

    开篇 近日 由阿里云计算平台大数据基础工程技术团队主导 与计算平台MaxCompute团队 华东师范大学数据科学与工程学院 达摩院合作 基于预测的云计算平台资源弹性伸缩框架论文 MagicScaler Uncertainty aware P
  • python 图片与二进制之间的转换

    一 PIL格式图片转成二进制 先读取为PIL格式 再转为二进制 import io import base64 from PIL import Image def image2byte image 图片转byte image 必须是PIL格
  • curl wget 不验证证书进行https请求

    wget https x x x x get ips no check certificate curl https x x x x get ips k
  • matlab watershed函数简单实现_薛定宇教授大讲堂(卷):MATLAB程序设计

    00作者简介 薛定宇 分别在沈阳工业大学 东北大学和英国Sussex大学获得学士 1985年 硕士 1988年 和博士学位 1992年 1997年任东北大学信息学院教授 深耕于计算机在数学与自动控制学科的应用 主持了国家精品课程建设 并于1
  • 海龙科技荣获2011年IP-Guard企业信息安全监管系统深圳地区最高白金代理商

    如何在不影响原有工作流程的前提下保护设计图纸 财务数据 客户信息等关系到公司核心利益的敏感数据 如何防止内部用户在使用机密文档时利用剪贴板 截屏 打印等方式有意或者无意的泄露敏感内容 如何防止用户利用QQ MSN Email等私自外发文档造
  • JS字符串格式化

    字符串格式化String prototype format function var values arguments return this replace d g function match index if values lengt
  • 【C++】宏函数的巧用

    2023年9月10日 周日上午 目录 怎么定义有多行代码的宏函数 示例程序一 输出文本 示例程序二 统计时间 怎么定义有多行代码的宏函数 如果需要定义多行代码的宏函数 可以在宏函数中使用反斜杠 来表示该行代码还未结束 继续在下一行继续编写代
  • Linux 如何省去git记忆用户名和密码输入

    You can check your credentials storage by the following command vim git credentials 也可以直接编辑该文件 http username password gi
  • 【用户行为分析】-JS端埋点

    需求 在用户购买会员卡时埋点 获取的事件属性包括 神策预置属性 卡类型 卡名称 购卡支付金额等数据 事件设计 实现 引入Js SDK 将获取到的代码放入html 的 head 里面 靠前的位置处 JS SDK获取方式 参考神策官网 http
  • selenium应对选中元素属性为隐藏的解决方案

    一 表现形式 可以看到在密码输入的位置 style对应的属性是style display none 然后我们使用selenium去对应输入框send keys 的时候就会发现 会报错输入不进去内容 二 问题分析 官方文档 大白话讲的话意思就
  • JavaDay07

    打印10000以内的所有完全数 如果一个正整数等于除了它本身之外所有除数之和 这个数就是完全数 如6 1 2 3 28 1 2 4 7 14 package com bjpowernode day07 demo01 exercise 打印1
  • 多样性指数介绍

    之前了解了shannon diversity index 所以顺便补一下其他多样性指数的概念 I AM 分割线 1 Species richness 系统中物种的观察值是其真实物种丰富度的有偏估计值 并且观察值会随着取样的增加非线性的增长
  • 3.1 PTQ与QAT的介绍

    1 前言 TensorRT有两种量化模式 分别是implicitly量化 隐式量化 以及explicitly量化 显性量化 隐式量化 trt7 版本之前 只具备 PTQ 一种量化形式 trtexec直接转换 各层精度不可控 显示量化 显性量
  • Pytorch:dtype不一致(expected dtype Double but got dtype Float)

    RuntimeError Expected object of scalar type Double but got scalar type Float for argument 3 mat2 in call to th addmm out
  • C++使用string的大数运算(1)加法

    本次项目目标 使用C 完成对于大数的相关运算 项目要点 1 大数指的是远超long long int的数据 2 将大数用矩阵进行存储 并通过矩阵实现运算 3 本人采用字符串进行存储 应注意char的特点 比如 char a 161 cout
  • 为硬件保留的存储空间怎么释放出来?

    为硬件保留的内存是系统为CPU 显卡 声卡 USB 硬盘 主板各管理控制芯片等设备保留了部分内存 释放方法如下 1 点击 开始 菜单 在搜索框中输入 msconfig 随后上方的搜索结果会显示出 msconfig 的图标 直接点击进入 2
  • PTA4(python)

    程序设计04 选择与循环 7 1 身体质量指数 高教社 Python编程基础及应用 习题6 3 7 2 计算分段函数f x 的值 7 3 程序员买西瓜 7 4 超速处罚 加测试数据 7 5 数据比较 7 6 运输打折问题 7 7 jmu p
  • 【Easyexcel】根据模板导出excel

    主要实现通过模板 导出对应数据 生成excel 1 版本 Maven com alibaba easyexcel 3 0 5 2 代码实现 ExportExcelBase 是定义一些非列表的字段 如下 导出时间等 工具类 import co