前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel神办公—【一】使用EasyExce实现数据“有对象写入”和“无对象写入”

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

作者头像
灰小猿
发布2021-12-17 16:15:41
1.4K0
发布2021-12-17 16:15:41
举报
文章被收录于专栏:灰小猿技术社区

写在前面

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

Easyexcel技术介绍

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

Easyexcel实现简单写入操作

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

有对象写入

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

代码语言:javascript
复制
/**
 * 基本数据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()方法,具体的使用如下:

代码语言:javascript
复制
    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的形式传入, 实例如下:

代码语言:javascript
复制
    /**
     * 不创建对象的写
     */
    @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的实用技巧, 我是灰小猿,我们下期见!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/11/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • Easyexcel技术介绍
  • Easyexcel实现简单写入操作
    • 有对象写入
      • 无对象写入
      相关产品与服务
      数据保险箱
      数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档