日常工作中,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<StudentEntity> 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<StudentEntity> 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<CourseEntity> list = ExcelImportUtil.importExcel(inputStream, CourseEntity.class, params);

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

如何用java完成Excel快速的导入导出相关推荐

  1. java横向导出excel_利用Java进行Excel的数据导入导出

    1. 引言 MS 的电子表格(Excel)是Office 的重要成员,是保存统计数据的一种常用格式.在一 个Java 应用中,将一部分数据生成Excel 格式,是与其他系统无缝连接的重要手段.在远程 ...

  2. JAVA实现Excel文件的导入导出

    版权声明:请勿用于任何商业用途的文章转载,转载请说明出处! 1.导入POI的JAR包 <!-- excel POI --><dependency><groupId> ...

  3. java做 excel文件的 导入导出 (SSM+layer)

    做的项目使用时 Java ssm + 前端layer+ freemark. 因为是从项目中扣的代码.整理了下逻辑. 有问题的下方留言哈 导入的依赖 poi <!-- https://mvnrep ...

  4. Java基于注解和反射导入导出Excel

    代码地址如下: http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包 ...

  5. Java 利用EasyPoi做Excel模板的导入导出操作

    Java 利用EasyPoi做Excel模板的导入导出操作 项目背景 加入pom依赖 项目Excel模板图 代码实现 首先是实体类定义 Excel 实现导入 Excel的导出 结束语 项目背景 作为一 ...

  6. java shell spool_批量快速的导入导出Oracle的数据(spool缓冲池、java实现)

    1. Java代码实现思路 BufferedWriter writefile = new BufferedWriter(new FileWriter(file)); writefile.write(& ...

  7. 循序渐进开发WinForm项目(5)--Excel数据的导入导出操作

    随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...

  8. SQL SERVER 与ACCESS、EXCEL的数据导入导出转换

    * 说明:复制表(只复制结构,源表名:a 新表名:b)       select * into b from a where 1<>1 * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b ...

  9. [导入][转]精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换

    * 说明:复制表(只复制结构,源表名:a 新表名:b)       select * into b from a where 1<>1 * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b ...

最新文章

  1. Mybatis 缓存系统源码解析
  2. ios开发-系统架构
  3. java mysql 行锁_Java如何实现对Mysql数据库的行锁?
  4. windows7 32升级64位 硬盘安装_LabVIEW 2018(32/64)位 软件安装教程
  5. OC之ARC环境中的循环strong问题
  6. 最炫国漫《雾山五行》用 Python 了解一下到底有多优秀
  7. 卷积神经网络爬虫实现新闻在线分类系统
  8. 一个六年Java程序员的从业总结:比起掉发,我更怕掉队
  9. 【神经网络与深度学习】CIFAR-10数据集介绍
  10. less知识点总结(二)
  11. 参考官方mysql自定义一个mysql sink connector
  12. Java面向对象练习题之银行卡类和用户类
  13. 小丑改造计划之动态规划
  14. python交互方式是什么意思_python交互模式是什么
  15. (正则)校验 8-16位,必须含有特殊字符、而大写字母、小写字母、数字至少包含其中两项
  16. 若依ajax返回数据,若依管理系统RuoYi-Vue(二):权限系统设计详解
  17. WebView 视频播放,全屏按钮显示不出来,全屏后不能播放视频
  18. python——实现鼠标与键盘监听与事件处理
  19. 最简单的分压和低频滤波电路
  20. 嵌入式linux使用A7680C 4G 网卡

热门文章

  1. 自我监督学习:AI技术的未来发展方向
  2. 中国人工智能产业白皮书
  3. 《Nature》纪念人工智能60周年专题:深度学习综述
  4. 特斯拉VS Waymo:谁将赢得无人驾驶汽车竞赛?
  5. 2017英国AI形势报告:认知鸿沟、新商业模式和当下的挑战
  6. 谷歌、亚马逊、微软、IBM…这些巨头都已如何通过AI赚到钱了?
  7. 非 985/211 学校的毕业生,进大厂的机率有多大?
  8. 汉芯一号、木兰语言再到天赐 OS,国产基础软件十年泣血,梦想何圆?
  9. Exchange 2010 共享邮箱
  10. 广州线下活动 | 精益运维与 DevOps 最佳实践