首页 > 编程语言 >封装java导出Excel工具类使用(二)

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

时间:2023-11-09 18:44:06浏览次数:32  
标签:StandardExcelAttr excelColumn java title Excel 列表 ExcelTitleStyleAnno 封装 true

目录

背景

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

快速引入

第一步导包,maven包仅包含poi依赖,导入时注意poi版本冲突
 	 <dependency>
            <groupId>top.rdongyue</groupId>
            <artifactId>ExcelUtils</artifactId>
            <version>1.0.6</version>
        </dependency>

基本excel导入成对象和合并excel导入成为对象

请查看上一篇文章 基于POI封装的操作Excel工具类使用

导出基本excel表格

需求:
在这里插入图片描述

//定义实体类
@Data
public class StandardExcelModel1 {
    @StandardExcelAttr(excelColumn = 0, title = "列表标题1")
    @ExcelTitleStyleAnno(fontName = "黑体",bold = true)
    String number1;
    @StandardExcelAttr(excelColumn = 1, title = "列表标题2")
    @ExcelTitleStyleAnno(fontName = "黑体",bold = true)
    Integer number2;
    @StandardExcelAttr(excelColumn = 2, title = "列表标题3")
    @ExcelTitleStyleAnno(fontName = "黑体",bold = true)
    String number3;
    @StandardExcelAttr(excelColumn = 3, title = "列表标题4")
    @ExcelTitleStyleAnno(fontName = "黑体",fontHeight = 16,fontColor = IndexedColors.RED ,bold = true)
    String number4;
	/**对应1对多的子列表*/
    @StandardExcelAttr(excelColumn = 4,colspan = 2, useListTitle = true,forIn = true)
    List<TestModelItem> number5;
    @StandardExcelAttr(excelColumn = 7, title = "列表标题6")
    @ExcelTitleStyleAnno(fontName = "黑体",bold = true)
    LocalDateTime number6;
    @StandardExcelAttr(excelColumn = 8, title = "列表标题7")
    @ExcelTitleStyleAnno(fontName = "黑体",bold = true)
    BigDecimal number7;
    @StandardExcelAttr(excelColumn = 9, title = "列表标题8")
    @ExcelTitleStyleAnno(fontName = "黑体",bold = true)
    Long number8;
    @StandardExcelAttr(excelColumn = 10, title = "列表标题9")
    @ExcelTitleStyleAnno(fontName = "黑体",bold = true)
    Character number9;
    @StandardExcelAttr(excelColumn = 11, title = "列表标题10")
    @ExcelTitleStyleAnno(fontName = "黑体",bold = true)
    String number10;
}
@Data
public class TestModelItem {
	/**第二级的子标题 依旧可以用ExcelTitleStyleAnno自定义标题样式*/
    @StandardExcelAttr(excelColumn = 4, title = "子标题2")
    String number2;
    @StandardExcelAttr(excelColumn = 5,colspan = 1, useListTitle = true,forIn = true)
    List<TestModelItem2> number3;
}
@Data
public class TestModelItem2 {

    @StandardExcelAttr(excelColumn = 5, title = "子子标题2")
    String number1;

    @StandardExcelAttr(excelColumn = 6,title = "子子标题3")
    List<String> number2;
}

public static void main(String[] args) 
//组装测试数据
	List<StandardExcelModel1> standardExcelModels = new ArrayList<>();
        for (int i = 0; i <10; i++) {
            StandardExcelModel1 testModel = new StandardExcelModel1();
            testModel.setNumber1(i+"行");
            testModel.setNumber2(i);
            testModel.setNumber3(null);
            testModel.setNumber4(i+"行");
            ArrayList<TestModelItem> objects = new ArrayList<>();
            for (int j = 0; j < 2; j++) {
                TestModelItem testModelItem = new TestModelItem();
                testModelItem.setNumber2("子节点"+j);
                ArrayList<TestModelItem2> objects1 = new ArrayList<>();
                for (int k = 0; k < 2; k++) {
                    TestModelItem2 testModelItem2 = new TestModelItem2();
                    testModelItem2.setNumber1("子子节点"+k);
                    ArrayList<String> objects2 = new ArrayList<>();
                    for (int l = 0; l < 2; l++) {
                        objects2.add("l"+l);
                    }
                    testModelItem2.setNumber2(objects2);
                    objects1.add(testModelItem2);
                }
                testModelItem.setNumber3(objects1);
                objects.add(testModelItem);
            }
            testModel.setNumber5(objects);
            testModel.setNumber6(LocalDateTime.now());
            testModel.setNumber7(new BigDecimal(100.00));
            testModel.setNumber8(121L);
            testModel.setNumber9('K');
            testModel.setNumber10(i+"行");
            standardExcelModels.add(testModel);
        }
        //调用导出标准方法
      ExportStandardExcelUtil.export(standardExcelModels, StandardExcelModel1.class,new FileOutputStream("d://导出标准表.xlsx"));

注:本次更新的列表1对多样式同样适用于导出异形表中的列表

最后

"如果您发现任何错误或有任何建议,请在评论中告诉我。我会尽力改进工具。"
"感谢您使用我的工具!如果您有任何问题或建议,请随时与我联系。"
"我也会持续改进的我工具。如果您有任何想法,请随时与我分享。"

标签:StandardExcelAttr,excelColumn,java,title,Excel,列表,ExcelTitleStyleAnno,封装,true
From: https://www.cnblogs.com/r-dongyue/p/17814720.html

相关文章

  • IDEA (JAVA) 内存使用高堆分析
    ====================HISTOGRAM====================Histogram.Top50byinstancecount[All-objects][Only-strong-ref]:1:[2.0M/141MB][1.75M/127MB]byte[]2:[1.99M/43.8MB][1.74M/38.3MB]java.lang.String3:[421K/15.1MB][369K/13.2MB]java.util.H......
  • JavaScript--String对象&自定义对象&Windows对象
    String对象 varstr1=newString("abc")varstr2="abc"trim():去除字符串前后两端的空白字符自定义对象  BOM对象 1、Windowconfirm方法会产生一个返回值varflag=confirm("");按确定返回true按取消返回falsesetTimeout()只执行一次setInterval()循环执行......
  • Python自动化办公——3个Excel表格中每个门店物品不同,想要汇总在一起(方法五)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公处理的问题,一起来看看吧。上一篇文章中,我们已经看到了四种解决办法了,这一篇文章我们一起来看看另外一种方法。二、实现过程这里【论草莓如何成为冻干莓】给了unstack()操作的方法,代......
  • 史上功能最全的Java权限认证框架!
    大家好,我是Java陈序员。权限认证是我们日常开发绕不过的话题,这是因为我们的应用程序需要防护,防止被窜入。在Java后端开发中,实现权限认证有很多种方案可以选择,一个拦截器、过滤器也许就可以轻松搞定。当然,现在也有很多成熟的框架,供我们选择。轻量的Shiro,Spring家族的SpringS......
  • java8 time to json_Java8 LocalDateTime 如何支持yyyy-MM-dd反序列化
    其实吧,从你的问题描述来看,我觉得你对于LocalDateLocalDateTimeLocalTime之间的区分以及Java8时间API的认识应该足够了,足够可以做一些简单使用的地步了,如果从我们旁观者角度来说,仅仅只是为了改你这个问题,其实之前回答的人都是可以的。比如上官元恒提到的直接把请求对象中的字段类......
  • # yyds干货盘点 # Python自动化办公——3个Excel表格中每个门店物品不同,想要汇总在一
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公处理的问题,一起来看看吧。上一篇文章中,我们已经看到了四种解决办法了,这一篇文章我们一起来看看另外一种方法。二、实现过程这里【论草莓如何成为冻干莓】给了unstack()操作的方法,代码如下......
  • JavaScript进阶
    闭包闭包(closure)是一个函数以及其捆绑的周边环境状态(lexicalenvironment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在JavaScript中,闭包会随着函数的创建而被同时创建。<body><script>//闭包:内层函数+外层函数变量/......
  • Day04-Java开发所需的前端技术
    HTTP请求请求行请求头请求体JavaScript函数一个字母占一个字节,一个汉字占三个字节//获取长度"字符串".length//获得字符串的urIEncode编码(特殊字符需要编码)encodeURIComponent("张三")//编码结果%E5%BC%A0%E4%B8%89get请求示例GET/test?name=zhang&age=18HTTP/1.1Host:lo......
  • Java圈高危安全漏洞
    主要高危漏洞:1、fastjson-1.2.78报告网址:https://devhub.checkmarx.com/cve-details/CVE-2022-25845/风险指数:9.8/10解决方式:升级版本至1.2.832、spring-web:5.2.9.RELEASECVE-2016-10000279.8DeserializationofUntrustedDatavulnerabilityCVE-2021-221187.8Imprope......
  • Day02java入门
    所有学习内容来自:狂神说javaJava入门高可用、高性能、高并发主要学习:Maven、Tomcat、Spring、Hadoop、myBatisjava优势及特性:​ 简单性、面向对象、可移植、高性能、分布式、动态性、多线程、安全性、健壮性JDK、JRE、JVM:环境安装卸载JDK高级系统设置环境变量删除JAV......