java后端Excel导出工具

vue+Java 实现前后端Excel导出 阅读详情

借助hutool工具包快速导出数据到Excel文件中。官方文档

1、依赖

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.16</version>
</dependency>

2、保存sheet相关信息的实体类

import lombok.Data;

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * SheetDTO
 *
 * @author ygr
 * @date 2021/12/1 12:00
 */
@Data
public class SheetDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * sheet页名称
     */
    private String sheetName;
    /**
     * 字段和别名
     */
    private LinkedHashMap<String, String> columns;
    /**
     * 列宽
     */
    private Map<String, Integer> widths;
    /**
     * 数据集
     */
    private Collection<?> dataList;
}

3、工具类

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.example.datacollector.dto.SheetDTO;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * excel导出工具
 *
 * @author ygr
 * @date 2021/12/1 12:01
 */
public class ExcelExportUtil {

    /**
     * 导出数据到流
     * <p>
     * 适合数据量较大的场景
     *
     * @param sheetList    sheetList
     * @param outputStream outputStream
     */
    public static void exportExcel(List<SheetDTO> sheetList, OutputStream outputStream) {
        ExcelWriter bigWriter = ExcelUtil.getBigWriter();
        // 重命名第一个Sheet的名称,不然会默认多出一个Sheet1的页
        bigWriter.renameSheet(sheetList.get(0).getSheetName());
        doExport(bigWriter, sheetList, outputStream);
    }

    /**
     * 将sheet追加到文件中,如果文件不存在,则创建新的文件
     *
     * @param sheetList sheetList
     * @param destFile  destFile
     */
    public static void appendSheet(List<SheetDTO> sheetList, File destFile) {
        assert CollectionUtil.isNotEmpty(sheetList);
        ExcelWriter excelWriter = ExcelUtil.getWriter(destFile);
        excelWriter.renameSheet(sheetList.get(0).getSheetName());
        doExport(excelWriter, sheetList, null);
    }

    private static void doExport(ExcelWriter excelWriter, List<SheetDTO> sheetList, OutputStream outputStream) {
        for (SheetDTO sheet : sheetList) {
            // 指定要写出的 Sheet 页
            excelWriter.setSheet(sheet.getSheetName());
            Map<String, Integer> widths = sheet.getWidths();
            LinkedHashMap<String, String> columns = sheet.getColumns();
            if (MapUtil.isNotEmpty(widths)) {
                int index = 0;
                for (Map.Entry<String, String> entry : columns.entrySet()) {
                    Integer wid = widths.get(entry.getKey());
                    excelWriter.setColumnWidth(index++, wid != null ? wid : 25);
                }
            } else {
                for (int i = 0; i < columns.size(); i++) {
                    excelWriter.setColumnWidth(i, 25);
                }
            }

            // 设置字段和别名
            excelWriter.setHeaderAlias(sheet.getColumns());
            // 设置只导出有别名的字段
            excelWriter.setOnlyAlias(true);
            // 设置默认行高
            excelWriter.setDefaultRowHeight(18);
            // 设置冻结行
            excelWriter.setFreezePane(1);
            // 一次性写出内容,使用默认样式,强制输出标题
            excelWriter.write(sheet.getDataList(), true);
        }
        if (outputStream != null) {
            excelWriter.flush(outputStream, true);
        }
        excelWriter.close();
    }

    /**
     * 导出Excel文件到浏览器
     *
     * @param sheetList sheetList
     * @param fileName  fileName
     * @param response  response
     * @throws IOException IOException
     */
    public static void exportExcel(List<SheetDTO> sheetList, String fileName, HttpServletResponse response) throws IOException {
        assert CollectionUtil.isNotEmpty(sheetList);
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        response.setHeader("Content-Disposition",
                "attachment;filename=" +
                        URLEncoder.encode(fileName + DateUtil.today() + ".xlsx", "UTF-8"));
        exportExcel(sheetList, response.getOutputStream());
    }

}

Java后端一键导出Excel工具:支持数据库查询结果直出,含POI封装与多Sheet中文表头 Java项目里需要把数据快速生成Excel文件?这个工具包直接拿来就能用,基于Apache POI封装,不用写重复的导出逻辑。传个List、传个实体类、再指定下表头文字和Sheet名,立刻生成标准xlsx文件。已经内置MySQL和Oracle的数据库连接示例,执行SQL后自动把结果集转成表格行,字段名还能映射成中文表头。日期、数字、布尔值这些常见类型会自动识别格式,避免导出后全是文本。整个结构是标准Maven工程,带pom.xml、日志配置、IDEA工作空间设置和Git管理文件,Spring项目或纯Java 阅读详情

相关推荐

java生成excel表格

java生成excel表格代码示例,下载后可以直接使用

Java之Excel导出工具类使用教程

前言: 本工具类经过PostMan和web页面严格测试可用,经过了多个版本迭代优化,可以直接使用,也方便大家根据自己的业务需求,修改定制自己的导出工具。 市面上有很多封装好的导出工具(如:阿里的easyExcel,GitHub上xxl-excel等),但如果直接引用依赖,扩展性和定制性比较差,所以博主通过apache.poi,自己实现一款Excel导出工具,方便定制使用。本工具类支持Spring...

kanglong129的博客 1347

告别报错!Win10下Autodock Vina 1.2.3保姆级安装与避坑指南

本文提供了Win10系统下Autodock Vina 1.2.3的完整安装与实战指南,涵盖环境配置、分子文件预处理、对接参数优化及结果分析等关键步骤。通过详细的避坑技巧和优化方案,帮助用户高效完成分子对接任务,特别适合生物信息学研究人员和药物发现领域的初学者。

weixin_29969209的博客 405

JAVA导出Excel文档工具EasyExcel

Ejava easyExcel 文件导出 接口

weixin_47215296的博客 6435

光学仿真案例(1) 铌酸锂非线性波导仿真模拟 FDTD仿真

在过去几年里,许多集成光子学应用往往需要多个相干可调谐光源,而且从外部激光器引入额外的光输入增加了芯片封装的复杂性,如果使用基于III-V族、氮化硅(SiN)或铌酸锂(LNO)的集成光源又大大增加了制造复杂性和成本。然而,通过非线性谐波相互作用产生的光源不需要额外的制造工艺来产生增益、反馈和外部电路,即可支持许多应用。在下面的案例中,演示了一种基于Luo[1]的铌酸锂波导频率转换集成系统。该案例主要仿真了利用温度调制实现高效相位匹配的铌酸锂纳米光子波导的二次谐波产生。

q895235273的博客 4145

汽车诊断之UDS入门-0x19 0x0A服务

0x19 0x0A解析

weixin_44842720的博客 3836

Java之——导出Excel通用工具类

转载请注明出处:https://blog.youkuaiyun.com/l1028386804/article/details/79659605 新版地址 https://blog.youkuaiyun.com/l1028386804/article/details/103791256 一、概述 相信大家在工作过程中,都会遇到这样一个需求,就是将相关的数据列表导出成excel,那么,有没有通用的导出方式呢,这里,...

冰河的专栏 5万+

FPGA学习笔记(一)入门背景、软件及时钟约束的概念及程序下载与固化

使用正点原子的PFPGA开拓者V2学习,通过b站上正点原子的手把手教你学FPGA-基于开拓者V2学习。

贾saisai的博客 3280

java Excel导出工具类

自己学习一下,Excel导出工具类

jiu_mu_mu的博客 1986

使用 ABAP 代码动态创建新的 Function Module

通过内表。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6912

YOLOv12改进策略【Neck】| arXiv 2024 MAFPN:多分支辅助特征金字塔网络 | 通过双向辅助融合与异构卷积机制,解决传统PAFPN多尺度特征融合不充分与小目标检测不足问题

本文记录的是利用MAFPN颈部结构改进YOLOv12的目标检测网络模型。通过引入双向辅助融合机制优化特征处理流程,在自底向上路径利用 SAF 模块融合主干浅层特征与颈部输出,并保留浅层空间信息,为小目标检测提供更丰富细节;自顶向下路径通过 AAF 模块建立密集连接,聚合浅层高 / 低分辨率层、同级层及前层特征,均衡各层通道数后实现多向梯度信息交互,增强中 / 大目标特征表达。将其应用到中,解决传统特征金字塔在多尺度信息整合中的不足,提升多尺度目标检测的精度与特征表达的丰富性。Multi-Branch Aux

Limiiiing的博客 1257

java后端Excel文件导入、导出工具类

java导入导出工具类

kuikuiaile的博客 624

MIPI D-PHY IP 使用说明(一)

目录 前言 一、IP 特点 二、IP 可用性 三、IP 总览 四、IP 声明 五、IP 结构 六、IP 分流桥 模式 七、端口描述 1、PPI 接口信号 1、常规 PPI控制信号 2、发送模式 时钟通道 高速 PPI 信号 3、发送模式 时钟通道 逃逸模式PPI 信号 4、发送模式 数据通道 高速 PPI 信号 5、发送模式 数据通道 控制接口PPI 信号 6、发送模式 ...

记录所学,分享知识,结识挚友 2505

javaWeb Excel导出功能

业务: 前端列表页面新增“导出”按钮,点击导出后,将符合查询条件的记录导出到Excel表格中。 ExcelUtil工具类 import java.io.*; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi....

weixin_40343906的博客 676

DA14531之如何Debug(在线调试、Jlink仿真、串口打印)

在线调试和串口打印调试。在线调试是Keil软件配合Jlink编译、烧录、仿真为一体的,其操作包括:运行、停止、打断点,单步运行等。而串口打印调试,只需打开相关配置,让arch_printf()函数正常输出串口数据。若想在初始化完成后打印arch_printf(“goto Loop\r\n”);波特率为115200,接收到串口消息goto Loop。连好线后,点击仿真按钮,在线Jlink调试。

hejinwu1314的博客 1792

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

封装java导出Excel工具类使用(二)

自己封装了一个excel工具类,方便以后使用和部分可能有相同需求的朋友使用

东岳的博客 358

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

poi导出excel 之工具类(一)

实现poi导出excel表格,最方便的就是封装工具类,以便公用,下面直接贴代码,亲测可用。需求差异请适当修改源码! 工具类源码见文尾。。。。。。 代码测试 一、前端请求: 导出 $("#downFun").click("click", function() { downFun(); }); function downFun() {

Java Learning 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java中的excel导出工具jxls用法

点击打开链接

mr_knights的博客 579

JAVA使用poi导出EXCEL

前端:如果你使用的是ajax类型的跨域导出,则无法出现弹框,所以直接选择window.location.href,具体操作看代码 后端:上面的地址为图片中的地址,如图 @GetMapping(value = "/export") public void exportSysTest(HttpServletRequest request, HttpServletResponse ...

帅帅的困哒哒 3967

springMVC下导出Excel功能

1、ExcleUtils.java代码: public class ExcelUtils { //excel默认宽度; private static int width = 256*14; //默认字体 private static String excelfont = "微软雅黑"; /** * * @param excelName 导出的EXCEL名字 * @p

zjt1388的专栏 8531

java-导出Excel通用工具类

链接

qq_33366098的博客 186

java导出Excel Vue前端字典映射 deleted

【代码】java导出Excel Vue前端字典映射 deleted。

tanzongbiao的专栏 341

java导出功能实现 原创 绝对有效

最近需要写一个功能,是前段调用后端导出excel功能,小爷我亲自写了一套,特此让大家可以减少走坑。 废话不多说,直接上代码。 导出功能是最常用的,下面的代码中用到了反射的思想,比如,你查询出来的List<T>结果集,只想导出指定的那些字段数据,就非常方便了,代码如下: 基本思路为:创建一个表格对象,将数据set到表格中,将表格流写入response返回 准备工作:pom中加入以下依赖: <!--导出功能jar--> <dependen

Harry博客 6349

java 导出 excel

java导出 excel 巨坑!!! ajax不支持导出excel ajax不支持导出excel ajax不支持导出excel 重要的事情说三遍!!!!! 先加入这几个包 &lt;dependency&gt; &lt;groupId&gt;org.apache.poi...

weixin_41695965的博客 778

利用poi导出EXCEL

最近写了一个spring,springmvc,hibernate,jsp的项目。后来想着在前端页面添加一个导出功能,所以就上网查了资料,实现了Excel导出功能,这里记录下自己的过程。1、在java项目中引入导出功能需要的jar包  poi-3.9.jar  poi-examples-3.9.jar  poi-excelant-3.9.jar  poi-ooxml-3.9.jar  poi-oox...

qq_26679095的博客 376

POI流式导出Excel

需要的pom依赖 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.0.3</version&...

gw的博客 2578
上一篇: java中执行groovy脚本
下一篇: SpringContextHolder
杨某人信了你的邪
博客等级 码龄9年 20粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值