java实现 Excel 导入导出

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

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

1@ExcelTarget("courseEntity") 2public class CourseEntity implements java.io.Serializable { 3 /** 主键 */ 4 private String id; 5 /** 课程名称 */ 6 @Excel(name = "课程名称", orderNum = "1", width = 25,needMerge = true) 7 private String name; 8 /** 老师主键 */ 9 //@ExcelEntity(id = "major") 10 private TeacherEntity chineseTeacher; 11 /** 老师主键 */ 12 @ExcelEntity(id = "absent") 13 private TeacherEntity mathTeacher; 14 15 @ExcelCollection(name = "学生", orderNum = "4") 16 private List<StudentEntity> students;

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

1 @ExcelEntity(id = "absent") 2 private TeacherEntity mathTeacher; 3 4@ExcelTarget("teacherEntity") 5public class TeacherEntity implements java.io.Serializable { 6 /** id */ 7 //@Excel(name = "主讲老师", orderNum = "2",isImportField = "true_major,true_absent") 8 private String id; 9 /** name */ 10 @Excel(name = "主讲老师_major,代课老师_absent", orderNum = "1",needMerge = true,isImportField = "true_major,true_absent") 11 private String name;

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

1 @ExcelCollection(name = "学生", orderNum = "4") 2 private List<StudentEntity> students; 3 4 /** 5 * 学生姓名 6 */ 7 @Excel(name = "学生姓名", height = 20, width = 30, isImportField = "true_st") 8 private String name; 9 /** 10 * 学生性别 11 */ 12 @Excel(name = "学生性别", replace = { "男_1", "女_2" }, suffix = "生", isImportField = "true_st") 13 private int sex; 14 15 @Excel(name = "出生日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd", isImportField = "true_st", width = 20) 16 private Date birthday; 17 18 @Excel(name = "进校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd") 19 private Date registrationDate;

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

导出

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

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

导入

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

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

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

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java使用POI将数据导出放入Excel

本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术。POI介绍使用springboot导入相关依赖获取数据(自行处理)完整代码实例:创建excel,将数据写入excel1.POI介绍要想使用POI对Excel进行操作,我们需要先了

Foxnic-Web 代码生成 (2) —— 代码生成的配置类

上一节,我们已经讲述了代码生成的基本步骤,但是对细节部分并未展开。利用FoxnicGenerator包进行代码生成的方式是多种多样的,我们这里提到的配置类这是其中一种,例如在FoxnicEAM项目里,有很多的代码生成非使用配置类来完成的。  我们优先选择配置类讲解,显然配置类有其优势。首先,配置类按数据表隔离,一数据表一模块一个配置类。其次,在配置类内部,按配置对象的不同,分别在不同的方法内进行配置代码的编写。例如,配置模型时在configModel方法内编写配置代码,配置字段时在configFields方法内编写配置代码。  那么,代码生成的配置为什么要用Java类,而不是用Json、XML或YML呢?首先,不管是Json、XML或YML、Java,都是在编辑器敲文本。那么哪一种方式敲文本是最方便的呢,自然是Java了,因为有开发工具强大的支持。

手把手教你利用Python轻松拆分Excel为多个CSV文件

一、前言在日常生活或者工作中的时候,我们偶尔会遇到这样一种让人头大的情况——当单个Excel文件较大或需要根据某一列的内容需要拆分为多个CSV文件时,用Excel的筛选功能去慢慢筛选虽然可行,但是来回反复倒腾工作量就比较大了。不过小伙伴们不用惊慌,其实这个情况我们只需要用Python几行代码就能实现!一起来看看吧二、项目目标将单个Excel文件拆分为多个

HuTool工具类使用之Excel文档的导入导出

HuTool工具类使用之Excel文档的导入导出前言在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel导入导出功能,可以大幅度减少今后开发中Excel的导入导出的相关操作。

Java如何准确判断是Excel文件

这两天逛guthub,看到一个Java操作Excel文件的项目,突然想到我们公司的WEB应用,也经常会涉及到Excel的操作,比如说很常用的Excel文件导入。那么我们是如何判断出,上传的文件确实是Excel文件呢?我翻阅了一下我们系统里面的代码,常见的写法如下:!(https://oscimg.oschina.net/osc