Excel神办公—【一】使用EasyExce实现数据“有对象写入”和“无对象写入”

656 阅读3分钟

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

写在前面

最近在做项目开发的时候,有用到easy excel技术来解析和写入excel,==所以今天在这里和大家分享一下如何使用easy excel技术来解析excel文件的操作==

Easyexcel技术介绍

Easyexcel技术是在poi的基础上发展起来的,它是对poi'的优化和提升,相对于poi来说,Easyexcel的好处就是在对文件读写的时候,是一行一行的读取的,这样做的好处就是在数据存储到数据库的时候,可以很好的避免内存消耗,占用较多的CPU资源。而且相对于poi,easyexcel的操作更加便捷,同样的操作,easyexcel的代码量更少。

Easyexcel实现简单写入操作

使用easyexcel实现写入操作的方式有很多种,其中最常用的是有对象写入和无对象写入,接下来我会把这两种方式分别和大家进行介绍。

有对象写入

在easyexcel中有对象写入的意思就是需要指定写入的数据是何种类型的数据,这种写入方式也是比较简单的,我们以下面的一个实例来演示一下。 首先建立一个实例对象DemoData类,如下:

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

在该类中有三个属性,我们把它们作为我们的表头,在easyexcel中可以使用@ExcelProperty()注解来指定该属性在写入到Excel后表头的内容, 之后关于写入数据到Excel,我们可以直接调用Easyexcel的Write()方法,具体的使用如下:

    public void writeDataToExcel_01() {
        log.info("将数据写入到excel,普通写法");
        /**
         * 获取到写入的数据
         */


        log.info("即将开始写入【" + demoData.size() + "】条数据");
        EasyExcel.write(FILEPATH + "testExcel_1.xlsx", DemoData.class).sheet("testSheet01").doWrite(demoData);
        log.info("【" + demoData.size() + "】条数据写入成功!");
    }

其中需要在write()中指定写入的文件路径和数据类型,之后通过setSheet()方法来指定要写入的sheet的名称,最后在dowrite()中传入要写入的数据的list集合即可,得到的效果如下: 请添加图片描述

无对象写入

无对象写入其实更简单,我们不需要指定要写入的数据的类型,可以直接传入一个存放数据的list,即可完成数据的写入操作。但是无论是表头还是内容,都需要以list的形式传入, 实例如下:

    /**
     * 不创建对象的写
     */
    @Test
    public void noModelWrite() {
        // 写法1
        String fileName =  "testExcel_1.xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        EasyExcel.write(fileName).head(head()).sheet("模板").doWrite(dataList());
    }

    private List<List<String>> head() {
        List<List<String>> list = ListUtils.newArrayList();
        List<String> head0 = ListUtils.newArrayList();
        head0.add("字符串" + System.currentTimeMillis());
        List<String> head1 = ListUtils.newArrayList();
        head1.add("数字" + System.currentTimeMillis());
        List<String> head2 = ListUtils.newArrayList();
        head2.add("日期" + System.currentTimeMillis());
        list.add(head0);
        list.add(head1);
        list.add(head2);
        return list;
    }

    private List<List<Object>> dataList() {
        List<List<Object>> list = ListUtils.newArrayList();
        for (int i = 0; i < 10; i++) {
            List<Object> data = ListUtils.newArrayList();
            data.add("字符串" + i);
            data.add(new Date());
            data.add(0.56);
            list.add(data);
        }
        return list;
    }

在这里需要注意的一点是:在使用无对象写入的时候,对于存放在list中的表头数据,需要每一列的表头都单独的存放在一个list中,否则写出的表格的表头会纵向排列,不行你可以试试哟!

以上就是使用easyexcel实现数据的有对象写入和无对象写入的操作了,关于easyexcel的操作还有很多,且听小猿之后和大家慢慢分享~ 觉得不错记得点赞收藏哦,之后继续分享更多关于easyexcel的实用技巧, 我是灰小猿,我们下期见!