easypoi实现表格导出(实现一对多,合并单元格)

【java】EasyPoi导出导入(合并单元格) 【代码】【java】EasyPoi导出导入(合并单元格) 阅读详情

easypoi教程文档:http://easypoi.mydoc.io/#text_197817

教程写的比零散,每次看都比较费劲。所以每次费劲之后就想整理一下。

1、pom依赖

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--        我这里用了lombok,根据个人情况选择是否使用,此依赖与easypoi无关,只是许需要写get set方法了-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

2、导出对应的实体类(一对多中的“一”)

package sol.erms.model.entity.process.use;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 借阅记录表/借阅主表导出表
 * </p>
 *
 * @author groot
 * @since 2020-03-18
 */
@Data
public class ErmsUseMainExport implements Serializable {

    private static final long serialVersionUID = 1L;


    /**
     * 借阅编号
     */
    @Excel(name = "借阅单编号", width = 20,needMerge = true)
    private String useNo;

    /**
     * 借阅人
     */
    @Excel(name = "申请人", width = 20,needMerge = true)
    private String ermsLender;

    /**
     * 借阅目的
     */
    @Excel(name = "借阅目的",width = 20, needMerge = true)
    private String ermsLendingpurpose;

    //子条目集合(这里是实现一对多的关键。name=""是为了不出现表头,如果不为空表头会多一层合并的单元格)
    @ExcelCollection(name = "")
    private List<ERMSUseExport> archList;






}

3、子对象(一对多中的“多”)

package sol.erms.model.entity.process.use;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;

import java.util.Date;

@Data
public class ERMSUseExport {

    @Excel(name = "档案名称",width = 30)
    private String archName;

    @Excel(name = "档案编号",width = 30)
    private String archNo;

    @Excel(name = "借阅方式",width = 20 ,replace = {"在线查看_0","现场查看_1","原件借出_2"})
    private String ermsApplymode;

    @Excel(name = "借出时间",width = 30)
    private Date startUseDate;

    @Excel(name = "借出受理人",width = 20)
    private String ermsLendhandler;

    @Excel(name = "借出审核人",width = 20)
    private String ermsBorrowReviewer;

    @Excel(name = "归还时间",width = 30)
    private Date ermsReturntime;

    @Excel(name = "归还人",width = 20)
    private Date ermsReturner;

    @Excel(name = "归还受理人",width = 20)
    private Date ermsReturnhandler;

    @Excel(name = "归还复核人",width = 20)
    private Date ermsReturnReviewer;

}

4、一对多导出的实现方法

    /**
     * excel导出时(一对多实现)
     * 
     *
     * @param response
     * @param workbook
     * @param fileName
     * @throws Exception
     */
    public Response exportUseRecord(HttpServletResponse response, List<Long> useIds) {
        try {
            if(ObjectUtils.isEmpty(useIds))return Response.fail("参数为空");
            Map<String,Object> map = new HashMap<>();
            map.put("ids",useIds);
            //获取导出数据
            List<ErmsUseMainExport> mainList = ermsUseMainService.getMainListUseCollectionByCondition(map);
            // 简单模板导出方法
            ExportParams params = new ExportParams();
            params.setSheetName("借阅单");//设置sheet名
            Workbook workbook = ExcelExportUtil.exportExcel(params, ErmsUseMainExport.class, mainList);
            //返回头设置下载,并设置文件名,返回
            setExportExcelFormat(response, workbook, "借阅单导出");
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return Response.fail("系统错误!");
        }
        return Response.success();
    }

    /**
     * excel导出时
     * 返回头设置下载,并设置文件名
     * 注意:以下设置编码格式是为了ie,当前项目是ie下使用的。360或者谷歌可能会文件名会乱码。根据自己需要调整编码。或者不用设置这么多,直接outStream输出得了。
     * @param response
     * @param workbook
     * @param fileName
     * @throws Exception
     */
    private void setExportExcelFormat(HttpServletResponse response, Workbook workbook, String fileName) throws Exception {
        response.reset();
        response.setContentType("application/x-msdownload");//下载
        fileName = fileName + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("gb2312"), "ISO-8859-1") + ".xls");
        ServletOutputStream outStream = null;
        try {
            outStream = response.getOutputStream();
            workbook.write(outStream);
        } finally {
            outStream.close();
        }
    }

5、效果图

 

EasyPoi模板导出(一对多导出) 【代码】EasyPoi模板导出(一对多导出) 阅读详情

相关推荐

开发笔记 | EasyPoi快速学习实现excel导入导出

easypoi学习笔记

qq_37630282的博客 8670

Easypoi实现表格导出(实现数据结构一对多,合并单元格)

导出Excel,针对数据是一对多形式Easypoi比较好用。

zhulin 2364

使用easypoi处理工作簿多sheet导出

easypoi模板化处理工作簿多sheet表导出,包含单元格合并,单元格函数,公式,单元格引用以及超链接的处理

小蜜蜂1010的博客 3027

EasyPOI导出报表(二)-合并单元格

这里我是在上篇的基础上粘贴的主要代码,如有需要可先看EasyPOI导出报表第一篇(http://t.csdnimg.cn/2ndg2)上篇讲到EasyPOI导出常规报表,本篇是在此基础上再增加新的东西-合并单元格,这个功能在需求中也很常见。接下来启动程序并调用接口,导出结果如下。EasyPOI工具类加上如下方法。controller层。

祖哥的博客 4424

EasyPOI 解析合并单元格并拆解

1.本次分享是先解析拆解到workbook在进行导入.​ 2.横列合并单元格个人是没有好的方法进行拆分只能按照业务逻辑灵活处理. 3.重在记录,欢迎评价、指正.

weixin_44533642的博客 3235

Springboot 导入导出Excel ,一对多关系,复合表格、合并单元格数据

excel 导入导出 1对多 合并单元格数据

默默不代表沉默 1万+

3表格单元格合并_Easypoi实现表格导出(实现数据结构一对多,合并单元格)

官方文档:EasyPoi教程_V1.0​easypoi.mydoc.io最近在做导出Excel,针对数据是一对多形式的对比后还是Easypoi比较好用。然后给大家分享哈1.添加maven依赖<dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base<...

weixin_36337756的博客 502

【参数不确定】敏感性分析(sensitivity analysis)

【运筹学】灵敏性分析

羊肉蛋花汤的博客 14万+

easyPoi导出excel

1.导入依赖 springboot项目:导入最新依赖,(最初导入低版本,先用了easyexcel,然后切换高版本easyexcel,然后引入easypoi,发现不好使,可能是版本问题,还是使用高版本靠谱些) ERROR cn.afterturn.easypoi.excel.export.base.ExportBase - Excel导出错误 <dependency> <groupId>cn.afterturn</groupId>

weixin_42101626的博客 865

【Clickhouse从入门到精通】第60篇:ClickHouse生态总结与未来展望

ClickHouse系列收官总结 本文作为《ClickHouse从入门到精通》系列的第60篇收官之作,系统回顾了整个系列的知识体系。文章从基础概念到高级应用,全面梳理了ClickHouse的核心技术: 知识体系:完整回顾了60篇文章的知识图谱,包括列式存储原理、MergeTree引擎家族、分布式架构等核心内容 生态工具:详细盘点了ClickHouse的企业版工具、运维监控、数据集成和可视化方案 版本演进:分析了从21.x到24.x的主要版本特性升级 未来趋势:展望了向量化引擎、湖仓一体、AI集成等发展方向

xyghehehehe的专栏 441

RFID射频识别技术介绍及简单应用

简单介绍RFID技术及其简单应用,后附简单门禁制作方法和代码

来者皆是客。 1万+

excel导入基于Easypoi一对多导入(实现合并单元格)

EasyPoi一对多导入 EasyPoi官方文档:(http://easypoi.mydoc.io/) 前言 利用EasyPoi实现一对多的表格导入,主要注解@ExcelCollection 一、导入表格示例 二、使用步骤 1.pom依赖 springboot整合EasyPoi <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-s

qq_21569575的博客 1万+

异步复位同步释放:如何确保复位信号的可靠性与时序安全

本文深入探讨了异步复位同步释放技术在数字电路设计中的关键作用,详细分析了复位信号的可靠性与时序安全问题。通过对比异步复位与同步复位的本质区别,揭示异步复位的优势与潜在风险,并提供了标准的Verilog实现方案。文章还涵盖了多时钟域下的复位同步策略、复位网络时序约束方法以及实际工程中的经验教训,为数字系统设计者提供了全面的复位信号处理指南。

weixin_29213655的博客 400

Java一对多情况下,使用EasyPoi实现Excel合并单元格完成导出功能

目录前言实现后记 前言 在实际开发中,数据库里面一对多的形式是普遍的事情,比如本次业务中,是一个举报模块,首先需要填写举报人信息,然后可以举报多个员工或者合作伙伴,那么这里就是一个举报人对应多个员工或者合作伙伴。 在后台管理页面里的表格里,我是每行只展示的举报人的消息,通过添加一个“查看详情”的按钮,可以打开新的页面查看被举报人的详细信息,这样算是比较合理的。但是需要对这些信息做一个Excel导出功能的话,该怎么在Excel里展示信息比较合理呢?我想到的就是合并单元格的形式。首先看看后台页面的展示情况:

weixin_44906271的博客 4741

手把手教你学Simulink——基于Simulink的重复控制抑制周期性负载转矩扰动

传统的PI调节器在面对这类特定频率的周期性扰动时,会因积分器的相位滞后而导致转速出现明显的纹波(如6次、12次谐波),严重影响系统的控制精度和静音性能。:要在频率 fd​处获得较高的开环增益以抑制扰动,必须大幅增加PI的比例系数 Kp​,但这会牺牲系统的相位裕度,导致高频共振甚至系统失稳;:电机转速变化时,基频 fbase​会变,导致 6次谐波频率 6×fbase​也在变。设系统的采样周期为 Ts​,目标抑制的周期性扰动频率为 fd​(rad/s),则对应的周期采样点数 N=fd​Ts​2π​。

MHD0815的博客 256

vue3 - vite报错TypeError: crypto.hash is not a function(vue3+vite启动运行提示错误,项目无法启动且打包报错失败,详细解决排查方案教程)

vue3 vite 报错,vue3+vite启动报错:TypeError: crypto.hash is not a function,创建vue3+vite项目时报错TypeError: crypto.hash is not a function,如何解决这个问题,VUE3+VITE报错crypto.hash,vue3运行报错,vite运行报错,vue3打包报错,vite打包报错,vue3新建项目无法运行,vue3 vite创建项目直接报错了,node版本不兼容,修改了node版本还是不行,依旧报错,一直

✅ 精选推荐文章 1万+

poi+easypoi实现表头多层循环,多级动态表头、树形结构动态表头、纵向合并单元格、多个sheet导出

以上,终于是把项目里要的表格给导出来了!😎源码在这这篇文章。

weixin_43165220的博客 2万+

FT2004(D2000)开发实战之AMD R5 230显卡驱动适配

AMD R5 230显卡驱动适配

嵌入式Linux 3200

easypoi needmerge失效_Java一对多情况下,使用EasyPoi实现Excel合并单元格完成导出功能...

目录前言实现后记前言在实际开发中,数据库里面一对多的形式是普遍的事情,比如本次业务中,是一个举报模块,首先需要填写举报人信息,然后可以举报多个员工或者合作伙伴,那么这里就是一个举报人对应多个员工或者合作伙伴。在后台管理页面里的表格里,我是每行只展示的举报人的消息,通过添加一个“查看详情”的按钮,可以打开新的页面查看被举报人的详细信息,这样算是比较合理的。但是需要对这些信息做一个Excel导出功能的...

weixin_39959126的博客 1985

逆向分析顶象5代各类验证码类型的图片还原方法(附源码)

6.刷新滑块验证码图片,会进入之前的for循环断点,分析此处的代码会发现,该循环循环了处理了n字符串的值,取出n字符中的值并使用charCodeAt生成Unicode 编码,然后又调用了a函数,如果a函数返回true就会把之前生成的Unicode编码+1,a函数参数分别是c数组和Unicode取余32后的值,然后再把Unicode取余32后的值push进c数组,这里的n值为滑块碎片背景图的name。2.搜索"ranges":,会找到ranges赋值的地方,在此处代码断点,并点击跳过断点,结束此次调试。

老衲爱洗头的博客 1195

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

EasyExcel复杂表头导出(一对多)

关于EasyPoi 框架的问题,在此不再赘述,参考我的另一篇博客,地址如下:EasyExcel复杂表头导入(一对多)_间歇性悲伤患者的博客-优快云博客_easyexcel复杂表头实际上,官方文档和网上都没有详细的导出教程,需要自己参考官方去实现。我搞了半天只弄成功了一个半桶水的,十分惭愧,在此记录一下,方便回溯。说明:EasyExcel无法处理List里面嵌套List的情况,我采用的方案是通过表格合并的来实现。下面,先给出具体实现,然后再谈谈问题。 Controller 层 getDate方法

大话家的博客 9686

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

easypoi实现带有合并单元格数据的导出

以前只做过poi的表格导出,复杂繁琐,这次有个功能需要合并单元格的数据导出,从同事那里取经,发现了一个超级炒鸡好用的导出工具easypoi,啊,天哪,开发这个的真是是最强大脑!!!话不多说了,直接上代码: 一:首先在pom.xml引入jar包 这个jar是eosypoi需要的 <dependency> <groupId>cn...

qq_38259126的博客 2684

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用easypoi导出excel简单使用、合并单元格(groupName)

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢! 今天尝试使用easypoi做Excel导出,首先如它的名字一样,导出相比之前使用的poi确实简单了不少,但是它的官方文档是真的不详细,有待完善,拿我导出的文件来说吧(图如下),这个标题合并单元格的效果是@Excel注解的groupName属性实现的,但是在官方文档中说明@Excel注解的时候并没有对groupName属性做说明,而且源码中虽然有这个属性,但是没有对这些属性做一点注释说明,直到..

FAIRYTAIL的博客 9852

easypoi 列合并_easypoi实现带有合并单元格数据的导出

以前只做过poi的表格导出,复杂繁琐,这次有个功能需要合并单元格的数据导出,从同事那里取经,发现了一个超级炒鸡好用的导出工具easypoi,啊,天哪,开发这个的真是是最强大脑!!!话不多说了,直接上代码:一:首先在pom.xml引入jar包这个jar是eosypoi需要的cn.afterturneasypoi-web3.0.3这个jar是@Data注解需要的org.projectlomboklom...

weixin_35399360的博客 3050

使用freemarker解决easypoi导出Word表格错位的问题

工作中碰到了需要导出Word表格文档的需求,最简单的方式就是使用easypoi先配置好word模板文件(使用他的插值语法),准备好需要导出的数据直接导出即可。不过在测试时发现,使用循环插值语法导出表格中部分列表内容时会出现表格错位的问题。网上找了许多方法都不能解决(我甚至使用原生poi去写这一块循环生成的表格,捣鼓了一天发现导出来的跟用easypoi导出来的一模一样,错位问题也一模一样。

PARADDD的博客 1572
上一篇: 执行npm install报错无法连接到github.com的问题
下一篇: mybatis/mybatis-plus一对多查询
grootblockchain
博客等级 码龄11年 55粉丝 101原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值