资讯专栏INFORMATION COLUMN

如何用java完成Excel快速的导入导出

zhichangterry / 2510人阅读

摘要:日常工作中是我们经常需要处理的文件报表的生成数据的导出几乎每个项目都需要写对应的处理作者也是编写这块代码大军的一员能否有方法让我们不用重复编写代码呢能否只要简单配置就可以完成我们的生成呢作者分析了和对象的关系发现就是我们的一个对象是我们的一

日常工作中,Excel是我们经常需要处理的文件,报表的生成,数据的导出,几乎每个项目都需要写对应的处理.作者也是编写这块代码大军的一员,能否有方法让我们不用重复编写代码呢,能否只要简单配置就可以完成我们的Excel生成呢,
作者分析了Excel和对象的关系,发现Row就是我们的一个对象cell是我们的一个属性,从而开发了Easypoi,
下面讲解下用Excel 如何几乎不写代码的完成导入导出

首先是我们以一个对象,拿最简单的学生和老师的对象来举例子,讲解下常见的对象关联关系,Easypoi是如何处理的
首先是课程,这个是,我们的导出主要对象

@ExcelTarget("courseEntity")
public class CourseEntity implements java.io.Serializable {
    /** 主键 */
    private String        id;
    /** 课程名称 */
    @Excel(name = "课程名称", orderNum = "1", width = 25,needMerge = true)
    private String        name;
    /** 老师主键 */
    //@ExcelEntity(id = "major")
    private TeacherEntity chineseTeacher;
    /** 老师主键 */
    @ExcelEntity(id = "absent")
    private TeacherEntity mathTeacher;

    @ExcelCollection(name = "学生", orderNum = "4")
    private List students;

一个课程对应了一个老师的实体

 @ExcelEntity(id = "absent")
    private TeacherEntity mathTeacher;

@ExcelTarget("teacherEntity")
public class TeacherEntity implements java.io.Serializable {
    /** id */
    //@Excel(name = "主讲老师", orderNum = "2",isImportField = "true_major,true_absent")
    private String id;
    /** name */
    @Excel(name = "主讲老师_major,代课老师_absent", orderNum = "1",needMerge = true,isImportField = "true_major,true_absent")
    private String name;

算是我们常见的一对一的关系
然后一个课程有多个学生,就是一对多的关系

 @ExcelCollection(name = "学生", orderNum = "4")
    private List students;
    
     /**
     * 学生姓名
     */
    @Excel(name = "学生姓名", height = 20, width = 30, isImportField = "true_st")
    private String        name;
    /**
     * 学生性别
     */
    @Excel(name = "学生性别", replace = { "男_1", "女_2" }, suffix = "生", isImportField = "true_st")
    private int           sex;

    @Excel(name = "出生日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd", isImportField = "true_st", width = 20)
    private Date          birthday;

    @Excel(name = "进校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd")
    private Date registrationDate;

这样我们就定义了一个包含一堆一和一堆多的一个实体,可能导出中没有这么复杂,跟多的是一个对象就搞定了
只需要个@Excel注解机可以

导出

现在我们定义好对象了,如何导出Excel --ExcelExportUtil 这个导出工具类

   public void testExportExcel_1() throws Exception {
        ExportParams params = new ExportParams("0328课程表", "日期:2016-03-28", "六年一班");
        Workbook workbook = ExcelExportUtil.exportExcel(params, CourseEntity.class,courseList);
        FileOutputStream fos = new FileOutputStream("D:/excel/0328课程表.xls");
        workbook.write(fos);
        fos.close();
    }
我们只要把我们定义好的对象的class传进去,以及对象的集合,Easypoi就可以返回一个Excel的workbook了,同时Easypoi是兼容03版本office和07版本office,你要穿个参数指定下类型及可以了,是不是不是比我们自己写代码简单多了,最少只需要2行代码就可以完成我们的office操作了
导入

我们把导出写完了,导入是不是很复杂呢,也不是,导入也是同样简单,定时实体和上面定义的方式一样
导入是用导入工具类

 ImportParams params = new ImportParams();
        params.setHeadRows(2);
        List list = ExcelImportUtil.importExcel(inputStream, CourseEntity.class, params);

定义下表头的参数,然后把流传入进去就可以得到我们的对象列表是不是so easy.赶快来使用吧

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70468.html

相关文章

  • Java对象和Excel转换工具XXL-EXCEL

    摘要:一行代码完成对象和之间的转换。说明属性列名称四版本更新日志版本,新特性导出支持对象装换为,并且支持字节数组等多种导出方式导入支持转换为对象,并且支持文件路径等多种导入方式版本,新特性字段支持类型。 《Java对象和Excel转换工具XXL-EXCEL》 showImg(https://segmentfault.com/img/remote/1460000012470335);showI...

    mj 评论0 收藏0
  • XXL-EXCEL v1.1.1 发布,Java对象和Excel转换工具

    摘要:新特性支持设置水平位置,如居中居左底层优化,预约多操作支持空导入抛错问题修复数据类型识别优化,全类型支持导入时支持空导出时限制非空,否则无法进行类型推导。概述是一个灵活的对象和文档相互转换的工具。一行代码完成对象和之间的转换。 v1.1.1 新特性 1、支持设置Field水平位置,如居中、居左; 2、底层API优化,预约多Sheet操作支持; 3、空Cell导入抛错问题修复; 4、C...

    刘玉平 评论0 收藏0
  • Java实现excel导入导出学习笔记1 - 实现方式

    摘要:需要的技术框架利用其上传下载功能解析技术定制导入模板制作前台与格式对应,版本低,兼容性好与格式对应组成的几个概念工作薄工作表行记录单元格创建中的的详见如创建创建工作簿创建工作表创建第一行创建一个文件存盘名字性別男解析文件创建,读取文件 需要的技术 1、strut2框架 利用其上传下载功能2、xml解析技术 定制导入模板3、jquery UI 制作前台 4、showImg(/i...

    wean 评论0 收藏0
  • SpreadJS 在 Angular2 中支持哪些事件?

    摘要:在上一篇文章中,我们学习了在中支持绑定的属性,今天我们来介绍在中支持哪些事件。详细的事件说明,请参考博客。版本即将发布,更多更好的功能尽在新版本中,敬请期待登录官网,了解更多。 showImg(https://segmentfault.com/img/bVP1Wc?w=900&h=500);SpreadJS 纯前端表格控件是基于 HTML5 的 JavaScript 电子表格和网格功能...

    姘搁『 评论0 收藏0
  • spring boot + easypoi快速实现excel导入导出

    摘要:封装了让我们能够非常简单的实现导出模板导出导入模板导出等,具体可见官网我这边实现了一个的导出,记录一下。 easypoi封装了poi让我们能够非常简单的实现Excel导出,Excel模板导出,Excel导入,Word模板导出等,具体可见官网:http://www.afterturn.cn/ 我这边实现了一个excel的导出,记录一下。 1、pom文件引入starter cn....

    summerpxy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<