使用easyExcel导出excel文件

2023-11-18

1.导入jar包

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.0.5</version>
</dependency>

2.点击导出按钮,浏览器开始下载对应的数据,也可以实现批量导出

3.实现思路:利用layui table监听点击事件,把点击的数据获取到,遍历拿到数据的id,难点就是

怎么样获取选中的数据,解决办法:将table提升为全局变量,后续使用就可以直接使用,很重要!

var table;

    layui.use(['table','form'], function(){
        table = layui.table;
        var form = layui.form;

        tableIns=table.render({
            id:'id',
            elem: '#partyMemberList',
            url:"/partyMember/selectPartyMember",
            method: 'get', //默认:get请求
            cellMinWidth: 80,
            page: true,
            request: {
                pageName: 'pageNum', //页码的参数名称,默认:pageNum
                limitName: 'pageSize' //每页数据量的参数名,默认:pageSize
            },
            response:{
                statusName: 'code', //数据状态的字段名称,默认:code
                statusCode: 200, //成功的状态码,默认:0
                countName: 'totals', //数据总数的字段名称,默认:count
                dataName: 'list' //数据列表的字段名称,默认:data
            },
            cols: [[{type: "checkbox"},
                {type:'numbers'/*,width:"5%"*/}
                ,{field:'name', title:'姓名',align:'center'/*,width:"10%"*/}
                ,{field:'sex', title:'性别',align:'center'/*,width:"10%"*/}
                ,{field:'age', title:'年龄',align:'center'/*,width:"15%"*/}
                ,{field:'phone', title:'手机号',align:'center'/*,width:"10%"*/}
                ,{field:'degree', title:'学历',align:'center'/*,width:"10%"*/}
                ,{fixed:'right',title:'操作',align:'center', toolbar:'#optBar'/*,width:"25%"*/}
            ]],
            done: function(res, curr, count){
               console.log("res:",res)
                pageCurr=curr;

            }

        });
function exportParty(){
    var checkStatus = table.checkStatus('id');
    var data=checkStatus.data;

    $.each(data,function(index,item){
        ids.push(item.id);
    });
    console.log("ex:",ids)
    downloadFileWithUrl("/partyMember/exportParty/?ids=" + ids.join(","));

    console.log("url:","/partyMember/exportParty/?ids=" + ids.join(","))
    //清空ids
    ids=[];
}

4.拿到id后怎样向后端传输这个id也是一个问题,解决办法是:利用a标签进行传输,将id数据转化成string拼接到url后面

function downloadFileWithUrl(url){
    var elink = document.createElement("a");
    elink.style.display = "none";
    elink.href = url;
    elink.click();

}

5.后端代码,拿到id后把对应的数据查询到,使用ExcelUtils导出方法就可以实现导出功能

 @Override
    public String exportParty(List<Integer> ids,HttpServletResponse response) throws Exception {
        List<PartyMember> partyMembers = new ArrayList<>();
        String sheetName="党员管理";
        String excelName="党员管理";
        if(ids.size()==0){
            partyMembers=partyMemberMapper.selectAll();
        }else {
            for (Integer id:ids){
                PartyMember partyMember = partyMemberMapper.selectById(id);
                partyMembers.add(partyMember);
            }
        }


        ExcelUtils.export2Web(response, excelName,sheetName, PartyMember.class,partyMembers );
    return "导出成功";
    }

 

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

使用easyExcel导出excel文件 的相关文章

  • 如何使用 Apache POI API 将图像添加到 pptx 中添加的图像占位符?

    我已经预定义了带有文本和图像占位符的 pptx 模板 我如何从模板访问和修改这些占位符 我可以使用 POI pptx API 直接将图像和文本添加到幻灯片中 但如何将其添加到模板的占位符中 请参阅链接以了解如何添加占位符来创建固定模板 ht
  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • 我需要什么库才能在 Java 中访问这个 com.sun.image.codec.jpeg?

    我正在用java创建一个图像水印程序 并导入了以下内容 import com sun image codec jpeg JPEGCodec import com sun image codec jpeg JPEGEncodeParam im
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个

随机推荐

  • 区块链和传统数据库有什么区别?

    都说区块链就是一种数据库 那区块链和传统数据库到底有什么区别呢 传统数据库拥有与其记录相关的授的客户机可以更改放在统一服务器上的部分 通过演进 ace副本 无论客户端在什么时候使用他们的PC访问数据库 他们都将获得数据库部分的更新适应 对数
  • python二维数组列表输出格式化:对齐数据(实例)

    学习python过程中遇到的问题 在这里记录一下 下面是二维列表 数组 格式化输出的实例 注意 t 有加后会自动对齐 a 学生学号 高等数学 高等物理 高等化学 程序语言 英文六级 个人平均成绩 201 t65 t58 t75 t80 t8
  • python保留小数位的三种方法

    python保留小数位的三种方法 保留小数位是我们经常会碰到的问题 尤其是刷题过程中 那么在python中保留小数位的方法也非常多 但是笔者的原则就是什么简单用什么 因此这里介绍几种比较简单实用的保留小数位的方法 方法一 format函数
  • PhpStorm64修改内存后不能启动

    审查phpstorm bat 这个bat文件应该是监控程序运行 并输出错误日志用的 在末尾加上pause查看完整的运行周期 JAVA EXE ALL JVM ARGS cp CLASS PATH com intellij idea Main
  • javac 命令 javac 命令大全详解---推荐看

    javac 命令 javac 命令大全详解 温柔一刀的技术博客 51CTO博客 1 javac 命令 用法 javac
  • Java--集合知识再补充(Map集合)

    下面就是我整理的部分学习笔记 学无止境 加油 为方便对多个对象的操作 就对对象进行存储 集合就是存储对对象最常用的一种方式 数组长度是固定的 且可以存储基本数据类型 集合可变 集合只能存储对象 Collection 下有两个子接口 为Lis
  • 权限验证-JWT认证

    JWT 1 什么是JWT JSON Web Token 通过数字签名的方式 以JSON对象为载体 在不同的服务终端之间安全的传输信息 2 JWT有什么用 JWT最常见的场景就是授权认证 一旦用户登录 后续每个请求都将包含JWT 系统在每次处
  • CentOS7 - systemd服务及开启关闭服务命令

    RHEL CentOS 7 0中一个最主要的改变 就是切换到了systemd 它用于替代红帽企业版Linux前任版本中的SysV和Upstart 对系统和服务进行管理 systemd兼容SysV和Linux标准组的启动脚本 Systemd是
  • oracle date 和 timestamp区别

    在今天的工作中 学到了以下几个知识点 一 date和timestamp 的区别 date类型是Oracle常用的日期型变量 他的时间间隔是秒 两个日期型相减得到是两个时间的间隔 注意单位是 天 例如 查看一下当前距离伦敦奥运会开幕还有多长时
  • c++ multiple definition of 问题解决方法

    问题描述 有一个 h头文件 两个 cpp文件都引用了这个 h文件 在 h文件中声明了一些全局变量或函数 编译时报错 multiple definition of 原因 好像是由于多次包含 然后编译 cpp文件是重复 定义了 解决方法 1 使
  • Linux 通过RPM包安装 MySQL 8.0

    Linux平台上推荐使用RPM包来安装Mysql MySQL 提供了以下RPM包的下载地址 MySQL MySQL服务器 你需要该选项 除非你只想连接运行在另一台机器上的MySQL服务器 MySQL client MySQL 客户端程序 用
  • 一、安卓笔记(1)—Android Studio下的的APP目录结构

    一 Android Studio工程目录 1 gradle文件夹包含的是gradle工具的各个版本 不需要手动去填写 自动生成的 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具 它使用一种基
  • C#开发Windows窗体应用程序的步骤

    使用C 开发应用程序时 一般包括创建项目 界面设计 设置属性 编写程序代码 保存项目 程序运行等6个步骤 1 创建项目 在Visual Studio2017开发环境中选择 文件 新建 项目 菜单 弹出 新建项目 对话框 如图8 1所示 图8
  • Linux环境下Ubuntu系统中下载gvim及相关配置

    分享一下Linux环境下gvim的下载以及自己的相关配置 也方便自己以后重新进行虚拟机的相关配置时进行参考 相关代码带有简略注释 Ubuntu版本18 04 6 首先是下载 命令窗口打开位置无所谓 在命令行中输入以下代码 sudo apt
  • Qt信号槽-原理分析

    转载一篇关于Qt信号槽原理解析的文章 讲解的很详细 有的地方可能有点深度 不过还是能很大程度上的帮助理解信号槽原理 一 问题 moc预编译在干嘛 signals和slots关键字产生的理由 信号槽连接方式有什么区别 信号和槽函数有什么区别
  • 性能优化面试题

    目录 1 当修改一个数据时 不想整个页面都被重新渲染 只想要渲染变更数据的那一部分 怎么做 2 页面是否可以快速加载 3 是否允许用户快速开始与之交互 4 怎么让滚动和动画流畅 5 怎么图片优化 6 骨架屏 合理的loading 7 长列表
  • 30款建模软件

    从入门级3D建模软件到中级再到高级的3D建模软件 从小白到大师相信总有一款适合你 下面是小编为大家列出的30款建模软件以及介绍 供您大开眼界 Google Sketchup 一款极受欢迎并且易于使用的3D设计软件 根据创作过程 开发了一套设
  • 冒泡排序(java)——3种方法

    这里的冒泡是按照从小到大的顺序来的 思想 将相邻的元素两两比较 当一个元素大于右侧相邻的元素时 交换他们的位置 当一个元素小于右侧相邻的元素时 不做任何改变 一 第一种方法 public static void main String ar
  • Python字典出现重复的键,以最后出现的值为准

    Python3 6及之后 字典是有序的了 出现重复的键 以最后出现的值为准 test dict a 1 a 2 a 3 print test dict 输出 a 3
  • 使用easyExcel导出excel文件

    1 导入jar包