关于easypoi可参考http://doc.wupaas.com/docs/easypoi/easypoi-1c0u4mo8p4ro8

下面是在网上看过的总结比较好的导出操作:

准备工作:在pom.xml中引入相关依赖

<!-- easy-poi -->
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.1.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.1.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>3.1.0</version>
</dependency>

下面给出四种导出excel的用法示例:

示例一:直接将List<Map<String, Object>>数据导出为excel示例(无需模板):

<!-- easy-poi -->
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.1.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.1.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>3.1.0</version>
</dependency>

示例二:通过注解,直接将Object(集合)数据导出为excel示例(无需模板):

相关的SchoolVO模型为:

import cn.afterturn.easypoi.excel.annotation.Excel;/*** 学校模型*/
public class SchoolVO {/** 学校名称 */@Excel(name = "学校名称", orderNum = "6", width = 20)private String schoolName;/** 学校地址 */@Excel(name = "学校地址", orderNum = "8", width = 20)private String schoolAddress;}

相关的StudentVO模型为:

import cn.afterturn.easypoi.excel.annotation.Excel;
import java.util.Date;/*** Student数据模型**/
public class StudentVO extends SchoolVO {/*** name指定导出excel时生成的列名* orderNum可指定导出的该属性对应的所在列的位置* width设置单元格宽度* type设置导出类型  1是文本, 2是图片, 3是函数,10 数字 默认是文本*/@Excel(name = "学号", orderNum = "1", type = 10, width = 15)private String studentID;@Excel(name = "姓名", orderNum = "2", width = 15)private String name;/*** 当gender为1时,导出的结果为 男, 当gender为0时,导出的结果为 女* mergeVertical设置是否纵向合并列*/@Excel(name = "性别",mergeVertical = true, replace = {"男_1", "女_0"},orderNum = "3", width = 5)private Integer gender;/*** type设置导出类型  1是文本, 2是图片, 3是函数,10 数字 默认是文本*/@Excel(name = "年龄",orderNum = "4", type = 10, width = 5)private int age;/*** 将Data日期导出为yyyy-MM-dd格式* mergeVertical设置是否纵向合并列* mergeRely设置合并列的前提条件,即:只有当索引为2的列(即:"性别"列)已经*          合并了时,那么此时这一列的纵向相同时,才能纵向合并;如果引为2的*          列(即:"性别"列)纵向数据不同,那么就算此列的纵向数据相同,那么*          也不会合并*/@Excel(name = "入校时间",mergeVertical = true, mergeRely = {2}, format = "yyyy-MM-dd", orderNum = "5", width = 20)private Date entranceTime;@Excel(name = "班级",orderNum = "7", width = 15)private String className;/*** 无参构造*/public StudentVO() {}/*** 全参构造*/public StudentVO(String studentID, String name, Integer gender,int age, Date entranceTime, String className) {this.studentID = studentID;this.name = name;this.gender = gender;this.age = age;this.entranceTime = entranceTime;this.className = className;}
}

导出excel的测试方法为:

/*** 对象---直接导出(无需模板)** 注:如果模型 的父类的属性也有@Excel注解,那么导出excel时,会连该模型的父类的属性也一会儿导出**/
@Test
public void directExportExcelByObject() throws IOException {List<StudentVO> list = new ArrayList<>(16);StudentVO student;Random random = new Random();for (int i = 0; i < 10; i++) {student = new StudentVO(i + "","name" + i,random.nextInt(2),random.nextInt(100),new Date(),"className" + i);student.setSchoolName("学校名称" + i);student.setSchoolAddress("学校地址" +i);list.add(student);}ExportParams exportParams = new ExportParams();exportParams.setSheetName("我是sheet名字");// 生成workbook 并导出Workbook workbook = ExcelExportUtil.exportExcel(exportParams, StudentVO.class, list);File savefile = new File("C:/Users/JustryDeng/Desktop/");if (!savefile.exists()) {boolean result = savefile.mkdirs();System.out.println("目录不存在,创建" + result);}FileOutputStream fos = new FileOutputStream("C:/Users/JustryDeng/Desktop/student.xls");workbook.write(fos);fos.close();
}

示例三:使用模板将Map<String, Object>数据导出为excel示例(需要模板

导出excel的测试方法为:

/*** 模板导出---Map组装数据** 注:.xls的模板可以导出.xls文件,也可以导出xlsx的文件;*    同样的, .xlsx的模板可以导出.xls文件,也可以导出xlsx的文件;**/
@Test
public void templateExportExcelByMap() throws IOException {// 加载模板TemplateExportParams params = new TemplateExportParams("templates/templateMap.xls");Map<String, Object> map = new HashMap<>(16);map.put("title", "全亚洲,最帅气人员名单");map.put("date", "2018-12-05");map.put("interviewer", "JustryDeng");List<Map<String, Object>> list = new ArrayList<>(16);Map<String, Object> tempMap;for (int i = 0; i < 5; i++) {tempMap = new HashMap<>();tempMap.put("name", "邓沙利文");tempMap.put("gender", new Random().nextInt(2) == 0 ? "男" : "女");tempMap.put("age", new Random().nextInt(90) + 11);tempMap.put("hobby", "活的,女的!!!");tempMap.put("handsomeValue", "100分(满分100分)");tempMap.put("motto", "只所以只帅到了全亚洲,是因为其他地方审美不同!");list.add(tempMap);}map.put("dataList", list);// 生成workbook 并导出Workbook workbook = ExcelExportUtil.exportExcel(params, map);File savefile = new File("C:/Users/JustryDeng/Desktop/");if (!savefile.exists()) {boolean result = savefile.mkdirs();System.out.println("目录不存在,进行创建,创建" + (result ? "成功!" : "失败!"));}FileOutputStream fos = new FileOutputStream("C:/Users/JustryDeng/Desktop/templateMapResult.xlsx");workbook.write(fos);fos.close();
}

示例四:使用模板将Object数据导出为excel示例(需要模板):

相关模型有HandsomeBoyPOJO:

/*** 具体信息 模型*/
public class HandsomeBoyPOJO {/** 姓名 */private String name;/** 性别 */private String gender;/** 年龄 */private int age;/** 爱好 */private String hobby;/** 帅气值 */private String handsomeValue;/** 座右铭 */private String motto;}

相关模型有ResultPOJO:

/*** 采访结果 模型**/
public class ResultPOJO {/** 标题 */private String title;/** 日期 */private String date;/** 采访人 */private String interviewer;/** 信息集合 */private List<HandsomeBoyPOJO> list;}

导出excel的测试方法为:

/*** 模板导出---对象组装数据** 注:实际上仍然是"模板导出---Map组装数据",不过这里借助了工具类,将对象先转换为了Map<String, Object>** 注:.xls的模板可以导出.xls文件,也可以导出xlsx的文件;*    同样的, .xlsx的模板可以导出.xls文件,也可以导出xlsx的文件;*/
@Test
public void templateExportExcelByObject() throws IOException, IllegalAccessException {// 加载模板TemplateExportParams params = new TemplateExportParams("templates/templateObject.xlsx");// 组装数据ResultPOJO resultPOJO = new ResultPOJO();resultPOJO.setTitle("全亚洲最帅人员名单");resultPOJO.setInterviewer("邓沙利文");resultPOJO.setDate("2018-12-05");List<HandsomeBoyPOJO> list = new ArrayList<>(8);resultPOJO.setList(list);HandsomeBoyPOJO handsomeBoyPOJO;for (int i = 0; i < 5; i++) {handsomeBoyPOJO = new HandsomeBoyPOJO();handsomeBoyPOJO.setAge(20 + i);handsomeBoyPOJO.setGender(i % 2 == 0 ? "女" : "男");handsomeBoyPOJO.setHandsomeValue(95 + i + "(满分100分)");handsomeBoyPOJO.setHobby("女。。。。");handsomeBoyPOJO.setMotto("我是一只小小小小鸟~");handsomeBoyPOJO.setName("JustryDeng");list.add(handsomeBoyPOJO);}// 生成workbook 并导出Workbook workbook = ExcelExportUtil.exportExcel(params, objectToMap(resultPOJO));File savefile = new File("C:/Users/JustryDeng/Desktop/");if (!savefile.exists()) {boolean result = savefile.mkdirs();System.out.println("目录不存在,进行创建,创建" + (result ? "成功!" : "失败!"));}FileOutputStream fos = new FileOutputStream("C:/Users/JustryDeng/Desktop/templateObjectResult.xls");workbook.write(fos);fos.close();
}/*** 对象转换为Map<String, Object>的工具类** @param obj*            要转换的对象*/
private static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {Map<String, Object> map = new HashMap<>(16);Class<?> clazz = obj.getClass();for (Field field : clazz.getDeclaredFields()) {field.setAccessible(true);String fieldName = field.getName();/** Returns the value of the field represented by this {@code Field}, on the* specified object. The value is automatically wrapped in an object if it* has a primitive type.* 注:返回对象该该属性的属性值,如果该属性的基本类型,那么自动转换为包装类*/Object value = field.get(obj);map.put(fieldName, value);}return map;
}

运行测试函数,成功导出excel:

SpringBoot使用Easypoi导出excel示例相关推荐

  1. 编码技巧——使用Easypoi导出Excel、多sheet

    本文主要介绍easypoi导出Excel的代码示例:自己之前手动实现过导出工具类<编码技巧--导出工具类>,基于实体和注解,通过反射来映射实体字段和exce列的关系:在部分工程里面看到了e ...

  2. easypoi导出excel不设置样式_EasyPOI 导出excel设置边框,背景颜色,字体样式

    EasyPOI 导出excel设置边框,背景颜色,字体样式 EasyPOI 导出代码示例ExportParams exportParams = new ExportParams(); exportPa ...

  3. 使用easypoi导出excel实现动态列

    使用easypoi导出excel实现动态列 说明 使用的是easypoi进行导出 行头是动态生成 依据key进行列匹配,进行数据填充 第一列进行纵向动态合并 自己的一个使用,记录一下 工具依赖 < ...

  4. EasyPOI 导出excel设置边框,背景颜色,字体样式

    EasyPOI 导出代码示例 ExportParams exportParams = new ExportParams(); exportParams.setStyle(ExcelExportStyl ...

  5. asp.net导出excel示例代码

    asp.net导出excel示例代码 asp.net导出excel的简单方法. excel的操作,最常用的就是导出和导入. 本例使用NPOI实现. 代码:/// <summary>     ...

  6. springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel

    springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...

  7. Springboot利用poi导出excel下载

    Springboot利用poi导出excel下载 因为项目中之前的做法是用反射获取属性,所以demo中也是用的反射,我看网上很多文章都是存入一个List中,不知道这两种哪种更何合适一点,或者有什么更好 ...

  8. NPOI导出Excel示例

    摘要:使用开源程序NPOI导出Excel示例.NPOI首页地址:http://npoi.codeplex.com/,NPOI示例博客:http://tonyqus.sinaapp.com/. 示例编写 ...

  9. 使用EasyPOI导出Excel模板数据(含图片)

    使用EasyPOI导出Excel模板数据(含图片) EasyPOI功能如同名字Easy,主打的功能就是容易,让一个没接触过POI的人员可以方便的写出Excel导出,Excel模板导出,Excel导入, ...

最新文章

  1. Pygame初始-模仿windows待机画面
  2. Apache配置静态缓存
  3. php获取excel数据并添加数据库,如何使用phpexcel读取数据并将其插入数据库?
  4. shell 命令 cmd命令
  5. 服务器 异常自动关机,服务器自动关机
  6. jdbc sql拼接字符串
  7. html5在线画板菱形怎么画,使用HTML5构建一个在线画板应用
  8. idea中为啥要用maven
  9. 智能驾驶软件测试,智能驾驶实车测试系统-VDAS
  10. 使用百度地图API来完成交大校园巴士时刻表
  11. MacOS配置go环境
  12. 利用requests库和Xpath爬取猫眼电影榜单【Python】
  13. 经线、纬线、本初子午线、南北东西半球
  14. 移植u-boot2020.04到原子哥的alpha开发板(三)
  15. T6客户档案-供应商-存货名称不能录入空格--sql 怎么去掉最后一个字符
  16. rabbitmq server网络启动原理分析
  17. flink入门_flink简单学习_flink初识
  18. 2021-08-09校网比赛A题
  19. android 获取堆栈地址,关于java native interface:如何捕获SIGSEGV(分段错误)并在Android下的JNI下获取堆栈跟踪?...
  20. Unity ShoeBox Extract Sprites 到 Unity 格式

热门文章

  1. safari浏览器_吹爆苹果自带浏览器Safari,没有比它更贴心的浏览器了!!
  2. transformer论文解读_【论文解读】ICLR2020 | 深度自适应Transformer
  3. python小技巧积累--题库(持续更新)
  4. [转载] python与c/c++相比有哪些优势
  5. python公共变量_Python中的公共变量
  6. math.atan_Python中带有示例的math.atan()方法
  7. MyBatis Plus 批量数据插入功能,yyds!
  8. 面试官 | 说一下 JVM 常用参数有哪些?
  9. C语言空指针NULL详解
  10. coroutine资源索引