工作几年,每年都有java数据导出Excel的需求,从最初的POI到公司封装的工具再到阿里的EasyExcel。总是有这个那个的小痛点,最近发现easypoi比较满足工作需求,可以很好的导出数据并处理单元格合并的问题,perfect!!!

这是entity类,注解的mergeVertical是纵向合并内容相同的单元格,默认是false

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;import java.io.Serializable;@Data
public class UserEntity implements Serializable {private static final long serialVersionUID = 1L;private String idx;@Excel(name = "籍贯", mergeVertical = true, width = 50)private String nativeStr;@Excel(name = "姓名", width = 20)private String userName;@Excel(name = "年龄", needMerge = true)private int age;@Excel(name = "地址", width = 50)private String addr;
}

测试类:

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.afterturn.easypoi.test.entity.UserEntity;
import cn.afterturn.easypoi.util.PoiMergeCellUtil;
import org.apache.poi.ss.usermodel.Workbook;
import org.junit.Test;import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class TemplateFengLingTest {@Testpublic void test() throws Exception {Map<String, Object> map = new HashMap<String, Object>();List<UserEntity> list = new ArrayList<>();for (int i = 0; i < 10; i++) {UserEntity entity = new UserEntity();entity.setIdx(i + "");entity.setNativeStr("广东梅州");entity.setUserName("Mrs Ling_" + i);if (i > 4) {entity.setUserName("Mrs Ling");entity.setIdx("5");}entity.setAge(16 + i);entity.setAddr("广东梅州_" + i);list.add(entity);}for (int i = 0; i < 10; i++) {UserEntity entity = new UserEntity();entity.setIdx(i + "");entity.setNativeStr("广西玉林");entity.setUserName("Mr Feng_" + i);if (i > 4) {entity.setUserName("Mr Feng");entity.setIdx("5");}entity.setAge(21 + i);entity.setAddr("广西玉林_" + i);list.add(entity);}map.put("entityList", list);TemplateExportParams params = new TemplateExportParams("doc/fengling_test.xlsx");ExcelExportUtil.exportExcel(params, map);Workbook workbook = ExcelExportUtil.exportExcel(params, map);PoiMergeCellUtil.mergeCells(workbook.getSheetAt(0), 1, 0, 1, 2);File saveFolder = new File("D:/home/excel/");if (!saveFolder.exists()) {saveFolder.mkdirs();}FileOutputStream fos = new FileOutputStream("D:/home/excel/fengling_test_export" + System.currentTimeMillis() + ".xlsx");workbook.write(fos);fos.close();}
}

模板:字段输出的写法可以搜索参考官方文档,文档写的很详细,这里就不赘述了

测试结果:

java easypoi使用模板导出Excel,合并单元格相关推荐

  1. easypoi 模板导出兼容合并单元格功能

    最新在使用easypoi,使用注解导出和模板导出的方式,现在主要就模板导出合并单元格一些坑和解决方法. 首先我建议刚接触的同学看这篇文章,很详细,功能也比较全面,比较感谢这篇文章的原创作者,网站1:e ...

  2. springboot项目导出excel 合并单元格表格

    springboot项目导出excel 合并单元格表格 导出效果 业务controller 业务数据 业务实体类 注解MyExcel.java 注解 MyExcels 导出工具类MyExcelUtil ...

  3. java导出excel合并单元格

    今天是2018最后一天了,废话就不多说了直接上干货吧! 1.java导出excel用到POI所有jar包 ,大家可以直接到下面地址下载点击打开链接 2.导出excel的方法 package org; ...

  4. java导出excel 边框不全_POI 导出Excel合并单元格后部分边框不显示

    用户需要导出自定义表格,其中合并单元格样式遇到的问题,合并后只显示第一行第一列的边框,其他边框不显示,于是遍查百度,寻到一点思路 ①了解Excel绘制原理 ②了解绘制Excel顺序 ③绘制Excel单 ...

  5. java SXSSF 导出excel 合并单元格,设置打印分页

    官方poi地址: Busy Developers' Guide to HSSF and XSSF Features HSSFWorkbook.XSSFWorkbook.SXSSFWorkbook的区别 ...

  6. java POI导出excel,合并单元格边框消失

    业务是导出一个报表,要求有一个跨多列的表头,肯定要用到合并单元格,但合并后边框消失.网上的一些解决办法是重写合并单元格方法,但弄清楚原因后,其实没必要. 原来是这样的: 合并后就第一个有边框,其余全成 ...

  7. POI导出EXCEL合并单元格对象嵌套List数据

    导出EXCEL 在实际的开发过程当中,我们会遇到一些比较复杂的导出需求,例如需要导出的实体类中需要嵌套集合对象等,正好最近碰到了所以分享出来,希望对大家有帮助 一.POI是什么 简单的说就是Apach ...

  8. poi导出Excel合并单元格、设置打印参数页眉页脚等

    由于生成文件不能落地,使用SXSSFWorkBook来对excel的导出工作 生成excel步骤: 1.创建workbook SXSSFWorkbook workbook=new SXSSFWorkb ...

  9. JXL导出EXCEL合并单元格、文字对齐方式 .

    public void createNoLotteryAlarmExcel(String filePath,String fileName,List<NoLotteryAlarm> ala ...

  10. JXL导出EXCEL合并单元格、文字对齐方式

    这次能做出来,主要是感谢各位在网上提供的资料,在此记录 导出的结果是,大家看哈,若有可取之处可继续 代码比较多,大家主要看哈我用红色标注部分即可 --------------------------- ...

最新文章

  1. getCacheDir用法
  2. 怎么排号_春节将至,那些过年不回家的人们都是怎么过年的?
  3. 如何搭建SVN的服务器
  4. 【渝粤教育】21秋期末考试建设工程法规10221k1
  5. jQuery 事件 - bind() 方法
  6. Python杂谈: __init__.py的作用
  7. 通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多系统的统一登录(数据库源码级)附源码...
  8. 接口参数,get和post
  9. 亲密关系-【沟通提示】-如何把学习到的东西用到生活中
  10. Go语言学习之11 日志收集系统kafka库实战
  11. Ubuntu 20.04 国内源
  12. You have new mail in /var/spool/mail/root提示的原因与解决办法
  13. Lucene PriorityQueue JDK PriorityQueue
  14. linux 安装arial字体,在CentOS中安装arial字体
  15. 黑马程序员——从迷茫的大学认识黑马
  16. 三角形花园和向左走(三角形性质和点集排序)
  17. linux 切换gnome kde桌面,科学网—openSUSE15.1切换桌面环境(从Gnome至KDE Plasma) - 潘林的博文...
  18. 怎么样用计算机计算三角函数,怎样在科学计算器上计算三角函数
  19. SVN检出报错,SVN更新时忽略指定文件或文件夹
  20. python播放mp3文件

热门文章

  1. 使用PDF处理控件Aspose.PDF以编程方式打印PDF文档完整攻略
  2. Free Mybatis plugin插件
  3. AutoX.js邀请码
  4. 时间管理中的15个法则和10大要素
  5. 一文说透小程序插件及其作用价值
  6. Linux三剑客与管道及正则
  7. 用JAVA编写50以内的素数_java求50以内的素数
  8. 字符流与字节流的相互转换原理及代码(Linux C)
  9. 机器学习项目实践(什么是深度学习?)
  10. 机器视觉工业缺陷检测的那些事(三、镜头)