Excel神办公—【三】使用EasyExce指定写入列&复杂头写入

举报
灰小猿 发表于 2021/12/06 20:26:53 2021/12/06
【摘要】 hello,你好呀,我是灰小猿!一个超会写bug的程序猿!前两篇文章和大家分享了有关使用easyexcel技术实现eaxcel简单读写的操作,总结一句话就是“简直不要太简洁!”.所以今天这一篇文章,我就继续和大家分享一些有关于使用easyexcel进行数据导出时的操作。体会easyexcel的强大魅力。\ 导入所需依赖在pom文件中导入easyexcel所需的依赖。 <!--p...

hello,你好呀,我是灰小猿!一个超会写bug的程序猿!
前两篇文章和大家分享了有关使用easyexcel技术实现eaxcel简单读写的操作,总结一句话就是“简直不要太简洁!”.
所以今天这一篇文章,我就继续和大家分享一些有关于使用easyexcel进行数据导出时的操作。体会easyexcel的强大魅力。\

导入所需依赖

在pom文件中导入easyexcel所需的依赖。

        <!--poi依赖03版本-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <!--poi依赖07版本-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
        <!--easyexcel依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.6</version>
        </dependency>

一、根据参数只导出指定列

根据参数只导出指定列的作用就是,如果我们的数据对象中的元素属性比较多,但是在导出到excel的时候,我们又不想要导出全部属性列,那么我们就可以指定只导出哪些列,或者指定哪些列不导出。数据对象如下:

/**
 * 基本数据demodata
 */
@Data
public class DemoData {
    @ExcelProperty(value = "字符串标题")
    private String stringTitle;
    @ExcelProperty(value = "时间标题")
    private Date dateTitle;
    @ColumnWidth(50)
    @ExcelProperty(value = "数字标题")
    private int doubleTitle;
}

指定不包含哪些列

指定在导出时不包含哪些列其实是比较简单的,我们只需要写入一个set集合,在其中写入不包含的属性名。之后将这个set集合作为参数传入即可。代码如下:

    /**
     * 根据参数在导出时不包括指定列
     */
    public void excludeColumnWrite() {
        log.info("根据参数在导出时不包括指定列~~~");
//        存储不包含的那些列的列名属性
        Set<String> excludeColumnNames = new HashSet<String>();
        excludeColumnNames.add("dateTitle");

        EasyExcel.write(FILEPATH + "testExcel_1.xlsx", DemoData.class)
//                指定在导出时不包括哪些列
                .excludeColumnFiledNames(excludeColumnNames)
                .sheet("测试表1")
                .doWrite(demoData);

        log.info("导出成功~~~");
    }

效果如下:

指定只包括哪些列

指定只包括哪些列的操作和指定不包括哪些列的操作一样,我们需要给includeColumnFiledNames()中传入需要指定写入的列的set集合即可。 具体操作看下面的实例:

    /**
     * 根据参数在导出时只包含指定列
     */
    public void includeColumnWrite() {
        log.info("根据参数在导出时只包含指定列~~~");
//        存储只包含的那些列的列名属性
        Set<String> includeColumnNames = new HashSet<String>();
        includeColumnNames.add("dateTitle");
        
//        数据写入excel
        EasyExcel.write(FILEPATH + "testExcel_1.xlsx", DemoData.class)
//                指定在导出时只包括哪些列
                .includeColumnFiledNames(includeColumnNames)
                .sheet("测试表1")
                .doWrite(demoData);

        log.info("导出成功~~~");
    }

效果如下:

二、复杂头写入&合并表头

通常我们在写入Excel的时候会遇到的一种情况就是需要对部分表头列进行合并,那么这个时候就需要用到复杂头的写入。在easyexcel中对于复杂头的写入,可以直接使用注解的形式。

例如我们要将“字符串标题”,“时间标题”,“数字标题”在上方合并成“主标题”,

那么我们只需要在数据对象的@ExcelProperty注解中指定即可。代码如下:

/**
 * 复杂头写入,
 * 比如主标题、合并单元格等操作
 */
public class ComplexHeadData {
    @ExcelProperty({"主标题","字符串标题"})
    private String stringData;
    @ExcelProperty({"主标题","时间标题"})
    private Date date;
    @ExcelProperty({"主标题","数字标题"})
    private double doubleData;
}

测试实例:

    /**
     * 复杂头写入
     */
    public void complexHeadWrite() {
        EasyExcel.write(FILEPATH + "testExcel_w1.xlsx", ComplexHeadData.class)
                .sheet("测试1")
                .doWrite(demoData);
    }

效果如下:

以上就是使用easyexcel技术来操作Excel都两种基本操作,之后我们在写入数据到Excel的时候就会,使用注解的方式就会更加便捷。

觉得不错记得点赞关注哟!之后继续和大家分享easyexcel的实用小技巧。

我是灰小猿,我们下期见!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。