Java 5行代码搞定Excel导入导出

场景

在工作中,导出Excel的场景经常出现,比如管理后台导出的功能、批量订正数据库等,在这些场景中的表格数据往往对应数据库的一条记录,表格格式十分简单。但是,类似导入导出都要用不同的代码实现。产品经常给笔者一个Excel表格数据,导入到数据库。每次都要写一堆功能、流程类似的导入导出代码,十分浪费时间。笔者这里是对Apache POI的封装。话不说,我们来体验一下。

使用

创建表格映射对象

@Data
public class Human {

    @Column(title = "眼睛颜色")
    private String eyeColor;

    @Column(title = "头发颜色")
    private String hairColor;
}

@Data
@ToString(callSuper = true)
public class Girl extends Human {

    @Column(index = 0, title = "姓名")
    private String name;

    @Column(index = 1, title = "年龄")
    private Integer age;

    @Column(index = 2, title = "身高")
    private Float height;

    @Column(index = 2, title = "体重")
    private Float weight;
}

导出演示

笔者在这里使用Junit Mock一些数据导出:

@Test
public void export1() {
	//将导出文件放到编译文件目录下
    String path = FileUtil.findRealPathByClasspath(this.getClass(), "/");
    path = path + "excel/Girl_" + TimeUtil.getCurrentSeconds() + ".xlsx";
    //mock 2000行数据
    List<Girl> girls = this.mockGirls(2000);
    //导出到指定文件目录
    byte[] bytes = ExcelHelper.instance(Girl.class).input(girls).doExport();
    NIOUtil.writeFile(path, bytes);
}

private List<Girl> mockGirls(int size) {
    List<Girl> data = new ArrayList<>(size);
    for (int i = 0; i < size; i++) {
        Girl girl = new Girl();
        girl.setName("CY" + i);
        girl.setAge(19);
        girl.setHeight(1.68F + 0.001F * i);
        girl.setWeight(45F + 0.001F * i);
        girl.setHairColor("黑色");
        girl.setEyeColor("灰色");
        data.add(girl);
    }

    return data;
}

导出结果:
在这里插入图片描述

导入演示

笔者拿刚才导出数据进入导入并打印:

@Test
public void import1() {
    InputStream is = this.getClass().getResourceAsStream("/excel/Girl.xlsx");
    List<Girl> list = ExcelHelper.instance(Girl.class).input(is).doImport();
    System.out.println(list);
}

导入结果:
在这里插入图片描述
从上述演示看,针对这种简单Excel报表,简单几行代码就能解决,如果你觉得还不错,可以通过Maven引用,或者github下载源码进行引用。

引入

maven
<dependency>
  <groupId>com.github.rxyor</groupId>
  <artifactId>carp-common-util</artifactId>
  <version>1.0.3</version>
</dependency>
github

https://github.com/rxyor/carp.git (记得star, >_>!!!)

发布了17 篇原创文章 · 获赞 9 · 访问量 6520

猜你喜欢

转载自blog.csdn.net/liuyanglglg/article/details/95952953
今日推荐