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, >_>!!!)

版权声明:本文为liuyanglglg原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liuyanglglg/article/details/95952953

智能推荐

Java 实现Excel的导入导出

Java 利用EasyPoi做Excel模板的导入导出操作 项目背景 加入pom依赖 项目Excel模板图 代码实现 首先是实体类定义 Excel 实现导入 Excel的导出 结束语 项目背景 作为一名传统业务的程序员,每天都要不得不面对对各种类型的Excel的操作。想想都让人头疼。尤其是那种表头有的要纵向合并单元格,有的横向单元格合并的Excel,听听就让人头脑发麻。 最近,在做这方面的Exce...

java的导出与导入excel

导出Excel 项目说明: 1、后台框架springboot 2、构建工具gradle 3、前端框架layui 4、jdk版本是11 github源码地址 项目层次结构 相关依赖包 导出excel的工具类 Service层 Controller层 前端页面 最后实现效果 导入excel的工具类(其它方法在上面类中已经写好) 最后把获取的表内容输出到控制台...

Java实现Excel文件导入导出(三)

(一)读写Excel文件的几种常用方式 POI JXL FESTEXCEL 1.POI简介 APache POI是Apache软件基金会开放源码函式库,POI提供API实现对Microsoft Office格式文档进行读写。HSS是Horrible SpreadSheet Format的缩写,翻译为“讨厌的电子表格格式格式”。通过HSSF可以使用纯Java代码来读取、写入、...

JAVA对Excel的导出与导入

相关jar包:jxl 使用pom配置导入 Excel的导出 示例代码 Excel文件内容: Excel的导入 Excel文件内容: 示例代码: 注:jxl无法对后缀为.xlsx的Excel文件导入,只能导入.xls格式:会报: jxl.read.biff.BiffException: Unable to recognize OLE stream异常...

猜你喜欢

新发的日常小实验——使用IETester测试不同IE版本的浏览器,测试网页JS的兼容性(console未定义兼容测试)

文章目录 一、痛点:IE兼容测试 二、关于IETester 三、IETester下载 四、写个html测试js的console接口 五、测试结果 六、js兼容处理 一、痛点:IE兼容测试 之前使用.Net的Winform桌面应用框架做了一个PC版的迷你浏览器(使用IE内核),方便拉起网页支付。 有用户反馈打开支付页面报了如下的错:“console”未定义 到底是多么老旧的I...

linux下搭建nginx及配置

文章目录 下载nginx 解压nginx资源包 准备编译环境 安装编译 查找安装路径并启动nginx 浏览器访问 下载nginx 下载地址:https://nginx.org/en/download.html 这里用的是nginx-1.16.1版本 解压nginx资源包 准备编译环境 安装编译 查找安装路径并启动nginx 浏览器访问 http://IP...

腾讯云+tipask快速搭建基于laravel的CMS网站

一、购买腾讯云服务器,服务市场->基础环境->选择WordPress平台镜像 二、按照tipask教程安装 tipask官方教程地址https://wenda.tipask.com/article/22 官方教程对新手不太友好,我整理如下: 1.ftp上传文件 云服务器镜像装载完毕后,浏览器访问服务器公网ip,点击获取权限后会下载服务器相关的文件 浏览器访问host url,根据所给的...

ElasticSearch入门教程

什么是ElasticSearch 基于Apache Lucene构建的开源搜索引擎 采用Java编写,提供简单易用的RESTFul API 轻松的横向扩展,可支持BP级的结构化和非结构化的数据处理 可应用场景 海量数据分析引擎 站内搜索引擎 数据仓库 一线公司实际应用场景 英国卫报 - 实时分析公众对文章的回应 维基百科、GitHub-站内实时搜索 百度 - 实时日志监控平台 安装 Windows...

小程序明明已经分包了,为啥没有大小没有变???

为什么要分包 真机预览时出现大于2M,无法预览。 对项目进行规整划分 如何分包 实际操作 先将需要分包的文件拷贝到小程序根目录下 在app.json中配置分包结构(如图) 修改被分包中的引用路径,如图片资源、导航URL 可以设置分包的在哪个页面加载 图中表示在进入login页面进行下载设置的分包,all表示在所有网络下。 失败解决!分包了为啥还是提示大小超过2M 分包的文件内所引用的外部文件也必须...


http://www.vxiaotou.com