springboot整合Excel填充数据代码示例

 更新时间:2023年08月31日 08:44:34   作者:无语堵上西楼  
这篇文章主要给大家介绍了关于springboot整合Excel填充数据的相关资料,文中通过代码示例介绍的非常详细,对大家学习或者使用springboot具有一定的参考借鉴价值,需要的朋友可以参考下

Java技术迷

填充一组数据

准备模板

封装数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.ArrayList;
import java.util.List;
/**
 * 使用实体类封装填充数据
 *
 *  实体中成员变量名称需要和Excel表各种{}包裹的变量名匹配
 */
@Data
public class FillData {
    private String name;
    private int age;
        // 生成多组数据代码
        public static List<FillData> initFillData() {
        ArrayList<FillData> fillDatas = new ArrayList<FillData>();
        for (int i = 0; i < 10; i++) {
        FillData fillData = new FillData();
        fillData.setName("学生0" + i);
        fillData.setAge(10 + i);
        fillDatas.add(fillData);
        }
        return fillDatas;
        }
}

类填充形式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Test
public void test1(){
    // 加载模板
    String templateFile="src/main/resources/excel/templte/fill_data_template1.xlsx";
    // 写入文件
    String targetFileName = "单组数据填充.xlsx";
    // 准备对象数据填充
    FillData fillData = new FillData();
    fillData.setName("学生1");
    fillData.setAge(10);
    // 生成工作簿对象
    ExcelWriterBuilder workBookWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile);
    // 获取工作表并填充
    workBookWriter.sheet().doFill(fillData);
}

Map形式填充 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Test
    public void test1(){
        // 加载模板
        String templateFile="src/main/resources/excel/templte/fill_data_template1.xlsx";
        // 写入文件
        String targetFileName = "单组数据填充.xlsx";
        // 生成工作簿对象
        ExcelWriterBuilder workBookWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile);
//         使用Map数据填充
        HashMap<String, String> mapFillData = new HashMap<>();
        mapFillData.put("name", "学生1");
        mapFillData.put("age", "11");
        // 获取第一个工作表填充并自动关闭流
        workBookWriter.sheet().doFill(mapFillData);
    }

结果 

填充多组数据

准备模板

注意模板里面与上面相比是多了.的

封装数据

与上面一样,省略。

填充

1
2
3
4
5
6
7
8
9
10
11
12
13
@Test
    public void test02(){
        // 加载模板
        String templateFile="src/main/resources/excel/templte/fill_data_template2.xlsx";
        // 写入文件
        String targetFileName = "多组数据填充.xlsx";
        List<FillData> fillDatas = FillData.initFillData();
        System.out.println(fillDatas);
        // 生成工作簿对象
        ExcelWriterBuilder workBookWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile);
        // 获取第一个工作表填充并自动关闭流
        workBookWriter.sheet().doFill(fillDatas);
    }

结果

组合填充

准备模板

即有多组数据填充,又有单一数据填充 。 

封装数据

同上。

填充

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Test
   public void test03(){
       // 加载模板
       String templateFile="src/main/resources/excel/templte/fill_data_template3.xlsx";
       // 目标文件
       String targetFileName = "组合数据填充.xlsx";
       List<FillData> fillDatas = FillData.initFillData();
       // 生成工作簿对象
       ExcelWriter excelWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile).build();
       // 生成工作表对象
       WriteSheet writeSheet = EasyExcel.writerSheet().build();
       // 组合填充时,因为多组填充的数据量不确定,需要在多组填充完之后另起一行
       FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
       // 填充并换行
       excelWriter.fill(fillDatas, fillConfig, writeSheet);
       HashMap<String, String> otherData = new HashMap<>();
       otherData.put("date", "2020-03-14");
       otherData.put("total", "100");
       excelWriter.fill(otherData, writeSheet);
       // 关闭
       excelWriter.finish();
   }

结果

水平填充

准备模板

水平填充和多组填充模板一样,不一样的地方在于,填充时需要通过 FillConfig 对象设置水平填充。  

封装数据

同上

填充

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Test
    public void test04(){
        // 加载模板
        String templateFile="src/main/resources/excel/templte/fill_data_template4.xlsx";
        // 写入文件
        String targetFileName = "水平数据填充.xlsx";
        List<FillData> fillDatas = FillData.initFillData();
        // 生成工作簿对象
        ExcelWriter excelWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile).build();
        // 生成工作表对象
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        // 组合填充时,因为多组填充的数据量不确定,需要在多组填充完之后另起一行
        FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
        // 填充
        excelWriter.fill(fillDatas, fillConfig, writeSheet);
        // 关闭
        excelWriter.finish();
    }

结果

资料

常用类

EasyExcel 入口类,用于构建开始各种操作;

ExcelReaderBuilder 构建出一个ReadWorkbook对象,即一个工作簿对象,对应的是一个Excel文件;

ExcelWriterBuilder 构建出一个WriteWorkbook对象,即一个工作簿对象,对应的是一个Excel文件;

ExcelReaderSheetBuilder 构建出一个ReadSheet对象,即一个工作表的对象,对应的Excel中的每个sheet,一个工作簿可以有多个工作表;

ExcelWriterSheetBuilder 构建出一WriteSheet对象,即一个工作表的对象,对应的Excel中的每个sheet,一个工作簿可以有多个工作表;

ReadListener 在每一行读取完毕后都会调用ReadListener来处理数据,我们可以把调用service的代码可以写在其invoke方法内部;

WriteHandler 在每一个操作包括创建单元格、创建表格等都会调用WriteHandler来处理数据,对使用者透明不可见;

所有配置都是继承的 Workbook的配置会被Sheet继承。所以在用EasyExcel设置参数的时候,在EasyExcel…sheet()方法之前作用域是整个sheet,之后针对单个sheet。

读取时的注解

@ExcelProperty

属性名含义说明
index对应Excel表中的列数默认-1,建议指定时从0开始
value对应Excel表中的列头
converter成员变量转换器自定义转换器需要实Converter接口

@ExcelIgnore

标注在成员变量上,默认所有字段都会和excel去匹配,加了这个注解会忽略该字段  

@DateTimeFormat

标注在成员变量上,日期转换,代码中用 String类型的成员变量 去接收 excel中日期格式的数据 会调用这个注解。里面的 value 参照 java.text.SimpleDateFormat

@NumberFormat

标注在成员变量上,数字转换,代码中用 String类型的成员变量 去接收 excel数字格式的数据 会调用这个注解。里面的 value 参照 java.text.DecimalFormat

@ExcelIgnoreUnannotated

标注在类上。不标注该注解时,默认类中所有成员变量都会参与读写,无论是否在成员变量上加了@ExcelProperty 的注解。标注该注解后,类中的成员变量如果没有标注@ExcelProperty 注解将不会参与读写。

@ExcelProperty

属性名含义说明
index对应Excel表中的列数默认-1,指定时建议从0开始
value对应Excel表中的列头
converter成员变量转换器自定义转换器需要实Converter接口

总结

到此这篇关于springboot整合Excel填充数据的文章就介绍到这了,更多相关springboot整合Excel填充数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/qq_63431773/article/details/132580522

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • Spring及Mybatis整合占位符解析失败问题解决

    Spring及Mybatis整合占位符解析失败问题解决

    这篇文章主要介绍了Spring及Mybatis整合占位符解析失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot上下文初始器加载过程详解

    SpringBoot上下文初始器加载过程详解

    这篇文章主要介绍了SpringBoot上下文初始器加载过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 使用Spring Boot创建Web应用程序的示例代码

    使用Spring Boot创建Web应用程序的示例代码

    本篇文章主要介绍了使用Spring Boot创建Web应用程序的示例代码,我们将使用Spring Boot构建一个简单的Web应用程序,并为其添加一些有用的服务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 使用Java实现创建Excel表单控件

    使用Java实现创建Excel表单控件

    在数据填报时,创建Excel表单控件是一项常见的任务,它可以极大地简化数据收集和处理的过程,本文主要介绍了如何使用Java实现创建Excel表单控件,感兴趣的可以了解下
    2024-03-03
  • Java数字图像处理之图像灰度处理

    Java数字图像处理之图像灰度处理

    这篇文章主要为大家详细介绍了Java数字图像处理之图像灰度处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • SpringBoot Admin升级boot等组件版本后无法监控微服务问题

    SpringBoot Admin升级boot等组件版本后无法监控微服务问题

    这篇文章主要介绍了SpringBoot Admin升级boot等组件版本后无法监控微服务问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java中使用COS实现文件上传功能

    Java中使用COS实现文件上传功能

    cos是O'Rrilly公司开发的一款用于HTTP上传文件的OpenSource组件。下面通过本文给大家分享使用COS实现文件上传功能,感兴趣的朋友一起看看吧
    2017-08-08
  • list转tree和list中查找某节点下的所有数据操作

    list转tree和list中查找某节点下的所有数据操作

    这篇文章主要介绍了list转tree和list中查找某节点下的所有数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot整合Redis管道的示例代码

    SpringBoot整合Redis管道的示例代码

    本文将结合实例代码,介绍SpringBoot整合Redis管道,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • SpringBoot + Redis如何解决重复提交问题(幂等)

    SpringBoot + Redis如何解决重复提交问题(幂等)

    在开发中,一个对外暴露的接口可能会面临瞬间的大量重复请求,本文就介绍了SpringBoot + Redis如何解决重复提交问题,具有一定的参考价值,感兴趣的可以了解一下
    2021-12-12

最新评论