JAVA使用EasyExcel数据库动态导出Excel。

news/2024/7/21 5:00:24 标签: excel, java

文章目录

    • 导入EasyExcel依赖
    • demo代码,拿来即用
    • 工具类方法如下。拿来即用
  • 工具类测试demo
    • 效果如图:

导入EasyExcel依赖

Gradle

implementation group: 'com.alibaba', name: 'easyexcel', version: '2.2.6'

Maven

<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.6</version>
</dependency>

demo代码,拿来即用

java">//保存路径与名字
    private final static String fileName = "E:\\" + System.currentTimeMillis() + ".xlsx";
    @Test
//    public static void easyUtil(List<String> heads,String head,List<Map<String, Object>> list){
	  			
    public void easyUtil(){
        List<String> heads = new ArrayList<>();		//表头信息
        heads.add("银行名称");
        heads.add("期间新增项目");
        heads.add("期间新增担保总额");
        heads.add("期间新增解保项目数");
        heads.add("期间新增解保金额");
        heads.add("在保项目数");
        heads.add("在保余额");
        heads.add("银行利率");
        String head="惠农通数据表";			//主表头
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String,Object> test = new LinkedHashMap<>();		//手动添加测试数据(可根据需要从数据库查询)
        test.put("t1", 1);
        test.put("t2", 2);
        test.put("t3", 3);
        test.put("t4", 4);
        test.put("t5", 5);
        test.put("t6", 6);
        test.put("t7", 7);
        test.put("t8", 8);
        list.add(test);
        Map<String,Object> test2 = new LinkedHashMap<>();
        test.put("t1", 1);
        test.put("t2", 2);
        test.put("t3", 3);
        test.put("t4", 4);
        test.put("t5", 5);
        test.put("t6", 6);
        test.put("t7", 7);
        test.put("t8", 8);
        list.add(test2);
        List<Object> objects = new ArrayList<>();
        List<List<String>> hs = new ArrayList<>();
        for (String s : heads) {
            hs.add(Arrays.asList(head,s));
        }
//        List<Map<String, Object>> l = new ArrayList<>();
        Collection<Object> values;
        List<List<Object>> list2 = new ArrayList<>();

        for (int i = 0; i < list.size(); i++) {

            values = list.get(i).values();
            for (Object value : values) {
                objects.add(value.toString());
            }
            list2.add(objects);
        }
        EasyExcel.write(fileName).head(hs).sheet("模板").doWrite(list2);
        System.out.println("导出成功");
    }

工具类方法如下。拿来即用

java">//保存路径与名字(也可以放进工具类,通过参数传递)
    private final static String fileName = "E:\\" + System.currentTimeMillis() + ".xlsx";
    /**
     * 简易版动态导出
     * @param heads		表头
     * @param head		主表头
     * @param list		表数据
     */
    @Test
    public static void easyUtil(List<String> heads,String head,List<Map<String, Object>> list){
//    public void easyUtil(){

        List<Object> objects = new ArrayList<>();
        List<List<String>> hs = new ArrayList<>();
        for (String s : heads) {
            hs.add(Arrays.asList(head,s));
        }
//        List<Map<String, Object>> l = new ArrayList<>();
        Collection<Object> values;
        List<List<Object>> list2 = new ArrayList<>();

        for (int i = 0; i < list.size(); i++) {

            values = list.get(i).values();
            for (Object value : values) {
                objects.add(value.toString());
            }
            list2.add(objects);
        }
        EasyExcel.write(fileName).head(hs).sheet("模板(sheet名字)").doWrite(list2);
        System.out.println("导出成功");
    }

工具类测试demo

java">package excel;

import com.alibaba.excel.EasyExcel;

import java.util.*;

/**
 * @author xu
 * @Description
 * @createTime 2021年05月06日 11:45:00
 */
public class test {

    public static void main(String[] args) {
        List<String> heads = new ArrayList<>();		//表头信息
        heads.add("银行名称");
        heads.add("期间新增项目");
        heads.add("期间新增担保总额");
        heads.add("期间新增解保项目数");
        heads.add("期间新增解保金额");
        heads.add("在保项目数");
        heads.add("在保余额");
        heads.add("银行利率");
        String head="惠农通数据表";			//主表头
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String,Object> test = new LinkedHashMap<>();		//手动添加测试数据(可根据需要从数据库查询)
        test.put("t1", 1);
        test.put("t2", 2);
        test.put("t3", 3);
        test.put("t4", 4);
        test.put("t5", 5);
        test.put("t6", 6);
        test.put("t7", 7);
        test.put("t8", 8);
        list.add(test);
        Map<String,Object> test2 = new LinkedHashMap<>();
        test.put("t1", 1);
        test.put("t2", 2);
        test.put("t3", 3);
        test.put("t4", 4);
        test.put("t5", 5);
        test.put("t6", 6);
        test.put("t7", 7);
        test.put("t8", 8);
        list.add(test2);
        easyUtil(heads,head,list);
    }

    private final static String fileName = "E:\\" + System.currentTimeMillis() + ".xlsx";
    public static void easyUtil(List<String> heads,String head,List<Map<String, Object>> list){
//    public void easyUtil(){

        List<Object> objects = new ArrayList<>();
        List<List<String>> hs = new ArrayList<>();
        for (String s : heads) {
            hs.add(Arrays.asList(head,s));
        }
//        List<Map<String, Object>> l = new ArrayList<>();
        Collection<Object> values;
        List<List<Object>> list2 = new ArrayList<>();

        for (int i = 0; i < list.size(); i++) {

            values = list.get(i).values();
            for (Object value : values) {
                objects.add(value.toString());
            }
            list2.add(objects);
        }
        EasyExcel.write(fileName).head(hs).sheet("模板(sheet名字)").doWrite(list2);
        System.out.println("导出成功");
    }
}

效果如图:

在这里插入图片描述

如有问题!欢迎大家评论讨论


http://www.niftyadmin.cn/n/1778602.html

相关文章

在windows上创建一个Vue项目

首先&#xff0c;我们需要确保我们的电脑上存在node和npm。 如果没有&#xff0c;请前往node.js官网下载 node.js官网 查看方法是否已安装方法 node -v #查看版本信息 npm -v如图&#xff0c;出现版本信息表示已安装 安装完成进行以下操作。 1、使用阿里云淘宝的镜像安装模块…

使用TypeScript拓展你自己的VSCode

转自&#xff1a;http://www.iplaysoft.com/brackets.html使用TypeScript拓展你自己的VSCode&#xff01; 0x00 前言在前几天的美国纽约&#xff0c;微软举行了Connect(); //2015大会。通过这次大会&#xff0c;我们可以很高兴的看到微软的确变得更加开放也更加务实了。当然&am…

chage 命令

chage命令是用来修改帐号和密码的有效期限。语法chage [选项] 用户名选项-m&#xff1a;密码可更改的最小天数。为零时代表任何时候都可以更改密码。 -M&#xff1a;密码保持有效的最大天数。 -w&#xff1a;用户密码到期前&#xff0c;提前收到警告信息的天数。 -E&#xf…

[转载] FFMpeg的码率控制

mediaxyz是一位研究ffmpeg有三年的高人了&#xff0c;这几天一直在折腾ffmpeg中的x264&#xff0c;就是不知道该如何控制码率&#xff0c;主要是参数太多&#xff0c;也不知道该如何设置&#xff0c;在google上search了一下&#xff0c;这方面的介绍为0&#xff0c;那就找media…

使用MyBatis-generator 自动生成MyBatis代码

2019独角兽企业重金招聘Python工程师标准>>> 参考&#xff1a; http://blog.csdn.net/sunny243788557/article/details/45166397 http://blog.csdn.net/you23hai45/article/details/50792392 编译命令&#xff1a;mvn mybatis-generator:generate http://blog.csdn.…

微信模板消息的发送动态封装(Java完美封装)

文章目录前提&#xff1a;官方地址模板消息文档地址测试号正式开发1、导入maven依赖实体类代码&#xff1a;&#x1f447;&#x1f447;RemarkMiniprogram //小程序相关数据&#xff0c;无小程序可以不填&#xff0c;或者填充空串Keyword&#xff0c;中间keyword部分First 首个…

Product Key Explorer(程序密钥显示工具) v3.9.1官方版

2019独角兽企业重金招聘Python工程师标准>>> 【Product Key Explorer(程序密钥显示工具)概括介绍】 Product Key Explorer是一款程序密钥显示工具。 【Product Key Explorer(程序密钥显示工具)基本介绍】 Product Key Explorer是一款程序密钥显示工具&#xff0c;可…

回文质数 USACO

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold题目描述 Description因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数.写一个程序来找出范围[a,b](5<a<b<100,000,000)间的所有回文质数; 因为 151 既是一个质数又是…