工作中难免会遇到一些复杂的表格导出需求,这样普通的Excel表格难免会无法满足我们的需要,easypoi就提供了模板导出的功能,以方便我们导出更加复杂的Excel表格,这篇文章就为大家介绍一下模板导出的方法。

假如给我们这种复杂的Excel文档,那么我们上一篇文章介绍的导出功能可能就无法满足了,这篇文章就指导大家一步一步解决这种复杂表格导出

easypoi官方文档:http://doc.wupaas.com/docs/easypoi/easypoi-1c0u6ksp2r091

需要依赖
 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.2.0</version></dependency>

我们先制作Excel模板

/*** 模板导出方法** @return*/@GetMapping("templateDerive")public String templateDerive() throws IOException {//这里是模板的路径TemplateExportParams params = new TemplateExportParams("excel/模板导出.xlsx");Map<String, Object> map = new HashMap<>();List<ExcelUser> list = new ArrayList<>();//设置日期格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");map.put("date", sdf.format(new Date()));//赋值制表人map.put("make", "天天");//赋值核表人map.put("check", "地地");//赋值标题map.put("title", "个人基本信息表格制作");ExcelUser excelUser1 = new ExcelUser();excelUser1.setName("小小");excelUser1.setAge("18");excelUser1.setSex("男");excelUser1.setEducation("本科");excelUser1.setPlace("中国");excelUser1.setSchool("中国大学");excelUser1.setRemark("这是一个备注");excelUser1.setDate(sdf.format(new Date()));ExcelUser excelUser2 = new ExcelUser();excelUser2.setName("大大");excelUser2.setAge("20");excelUser2.setSex("女");excelUser2.setEducation("本科");excelUser2.setPlace("北京");excelUser2.setSchool("北京大学");excelUser2.setRemark("这是第二个备注备注");excelUser2.setDate(sdf.format(new Date()));list.add(excelUser1);list.add(excelUser2);map.put("list", list);Workbook workbook = ExcelExportUtil.exportExcel(params, map);//存储位置File savefile = new File("D:/excel/");if (!savefile.exists()) {savefile.mkdirs();}//创建文件FileOutputStream fos = new FileOutputStream("D:/excel/模板导出.xlsx");workbook.write(fos);fos.close();return "成功";}

我的模板是放在resources里面的

代码部分是比较简单的,数据也都是我自己手动添加的一些数据,大家可以根据需要自己从数据库获取数据,或者前端给你传过来的数据。
需要注意的是{{}}这里面的字段名必须要跟你Map的字段名保持一致 多条数据时它会根据你list里面size的值来决定插入多少行,总体来说用起来还是比较方便的

模板导出常用的指令

$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入 (这个是会有很多相同字段的数据使用 多行)
#fe: 横向遍历 (与上一个相反 也是会有很多相同字段的数据使用 多列)
空格分割
三目运算 {{test ? obj:obj2}}
n: 表示 这个cell是数值类型 {{n:}}
le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
fn: 格式化数字 {{fn:(obj;###.00)}}
fe: 遍历数据,创建row
!fe: 遍历数据不创建row
v_fe: 横向遍历值
!if: 删除当前列 {{!if:(test)}}
单引号表示常量值 ‘’ 比如’1’ 那么输出的就是 1
&NULL& 空格
&INDEX& 表示循环中的序号,自动添加
]] 换行符 多行遍历导出
sum: 统计数据
cal: 基础的±X% 计算
dict: 字典
i18n: 国际化

查看结果

网页返回


文件夹

表格


可以看到我们需要的数据已经插入到表格中了,模板导出用起来也非常的简单方便,而且能够满足我们一些复杂的表格导出

创作不易转载应注明出处

源码地址 :https://github.com/Flyingntothesky/easypoi.git

大家有什么问题可以下方评论交流

Excel导入导出之easypoi工具之模板复杂表格导出相关推荐

  1. 关于excel导入到封装成工具类jar包和web版门店收银网络无法无法连接上的解决方法...

    2011-12-4 1.excel导入工具封装碰到如何给传输过来的泛型对象进行对象点Setter的方法,解决方法应该可以查看struts2框架的源码查看他在拦截器作用下是怎么给action这个类的一个 ...

  2. elementui中有导出组件吗_Element-ui组件库Table表格导出Excel表格

    安装 npm install --save xlsx file-saver 两个插件的详细地址在下面 https://github.com/SheetJS/js-xlsx https://github ...

  3. php导入导出xls表,TP5.0 PHPExcel 数据表格导出导入

    1.先在github里面下载PHPexcel这个类库 或者通过以下链接下载PHPexcel类库. http://www.php.cn/xiazai/leiku/1491 2.解压之后把它复制到exte ...

  4. php excel导出sheet表,phpexcel来做表格导出(多个工作sheet)

    1.先得去下载phpexcel文档,加压下来 /** * 简单实用Execl */ set_include_path('.'.get_include_path().PATH_SEPARATOR.dir ...

  5. 通用万能excel导入的Python实现

    通用万能excel导入的Python实现 一.正言 从设计方案到算法和功能代码实现,花了我一周时间,在这里记录方便大家参考.废话少说,首先通过配置文件配置你想要的数据,只需要配置简单的表达式就可以实现 ...

  6. 推荐一款非常好用的Excel导入导出工具EasyPoi

    EasyPoi简介 用惯了SpringBoot的朋友估计会想到,有没有什么办法可以直接定义好需要导出的数据对象,然后添加几个注解,直接自动实现Excel导入导出功能? EasyPoi正是这么一款工具, ...

  7. java超级简单到爆的Excel导入导出(easypoi)

    场景: 在日常工作中,excel导入导出,是十分常见的,有两种主流的技术,一种是jxl,另一种是poi,而easypoi就是对poi进行了封装,使得导入导出变得更加的简单,阿里巴巴也有封装的工具名叫E ...

  8. easypoi 多sheet导入_程序员接私活利器 玩转excel导入导出

    为什么会写Easypoi 以前的以前(岁月真TMD的快)我虽然写了不少代码但还是很少写poi,然后跳到一家公司之后就和业务人员聊上了,来这个需要个报表,这个报表样式是这样的,这个表头是这样的,就这样我 ...

  9. SpringBoot集成EasyPoi实现Excel导入导出

    作者介绍: 本人Java特工,代号:Cris Li : 中文名:克瑞斯理 简书地址: 消失的码农 - 简书 CSDN地址: https://blog.csdn.net/jianli95 个人纯洁版博客 ...

最新文章

  1. 机器学习(16)ROC曲线与AUC指标(癌症分类的模型检测--AUC指标)
  2. JRuby大捷:ThoughtWorks宣布Mingle发布在即
  3. C语言再学习 -- 运算符与表达式
  4. 【大话Hibernate】Hibernate两种实体关系映射详解
  5. Kinect+OpenNI+OpenCV使用
  6. python之路---03 整型 bool 字符串 for循环
  7. 小米台灯底座接口很松_选购台灯发愁?这篇桌面照明方案助你一臂之力
  8. 网页排版规则:你需要知道的
  9. linux中id命令的功能,Linux id命令参数及用法详解
  10. JS 数组 Array 对象详解 与 for...of 增强型迭代
  11. python:安装pycaret2.2.3(pytorch版本为1.7.1)
  12. 「JXOI2018」游戏
  13. app--查看包名的五种常用方法
  14. autojs自动阅读脚本源代码免费分享
  15. WinDriver简介(或介绍)
  16. lzg_ad:CMD下打开控制面板
  17. 交换机路由器常用命令大全
  18. PS长投影文字制作教程
  19. php getcwd文件件,PHP目录函数 getcwd (取得当前工作目录)
  20. Neo4j CQL 常用语句

热门文章

  1. pyqt5 隐藏任务栏图标
  2. 计算机毕业设计php的飞机票航空售票查询预定系统
  3. Enlight Software Ltd.官方正式推出〔金融帝国实验室试玩版本〕(Capitalism Lab Demo Version)
  4. 关于初学者出现Springboot启动后 服务器可以访问但不能跳转到页面
  5. 长夜梦中惊坐起,Vue的双向绑定到底是个什么东西?
  6. sql查询出两张表id不同的数据
  7. 微信开发实例视频教程-深入浅出微信公众平台实战开发
  8. 无线网卡和无线上网卡的区别
  9. vuepress reco主题优化与修改
  10. linux查看守护进程格式,详解Linux中的守护进程