Easypoi为谁开发

  • 不太熟悉poi的
  • 不想写太多重复太多的
  • 只是简单的导入导出的
  • 喜欢使用模板的

Easypoi的目标是什么

不是替代poi,而是让一个不懂导入导出的快速使用poi完成Excel和word的各种操作,而不是看很多api才可以完成这样的工作

独特的功能

  • 基于注解的导入导出,修改注解就可以修改Excel
  • 支持常用的样式自定义
  • 基于map可以灵活定义的表头字段
  • 支持一堆多的导出,导入
  • 支持模板的导出,一些常见的标签,自定义标签
  • 支持HTML/Excel转换,如果模板还不能满足用户的变态需求,请用这个功能
  • 支持word的导出,支持图片,Excel

如何使用

  1. easypoi 父包--作用大家都懂得
  2. easypoi-annotation 基础注解包,作用与实体对象上,拆分后方便maven多工程的依赖管理
  3. easypoi-base 导入导出的工具包,可以完成Excel导出,导入,Word的导出,Excel的导出功能
  4. .easypoi-web 耦合了spring-mvc 基于AbstractView,极大的简化spring-mvc下的导出功能

加入maven依赖,如果没有maven请直接下jar,在alimaven

    <dependency>    <groupId>cn.afterturn</groupId>    <artifactId>easypoi</artifactId>   <version>3.2.0</version>   <type>pom</type></dependency><dependency>   <groupId>cn.afterturn</groupId>   <artifactId>easypoi-base</artifactId> <version>3.2.0</version></dependency><dependency>    <groupId>cn.afterturn</groupId>    <artifactId>easypoi-annotation</artifactId>    ]<version>3.2.0</version></dependency><dependency>   <groupId>cn.afterturn</groupId>  <artifactId>easypoi-web</artifactId>  <version>3.2.0</version></dependency>

java导出接口

/*** 自定义导出过磅记录excel** @param poundLogDto 查询条件* @return*/@RequestMapping(value = "/poundLog/exportCustomExcel", method = {RequestMethod.GET})@ResponseBodypublic Result exportCustomExcel(PoundLogDto poundLogDto) {//1.获取废品的excel模板TemplateExportParams params = new TemplateExportParams("doc/customLog.xlsx");//2.获取所有过磅数据List<Map<String, Object>> allMap = poundLogService.findAllMapByCondition(poundLogDto, null);Map<String, Object> map = new HashMap<String, Object>(100);map.put("poundLogList", allMap);//3.执行excel导出Workbook workbook = ExcelExportUtil.exportExcel(params, map);//4.创建文件存储路径String dateStr = DateUtil.dateString("yyyy_MM_dd", new Date());File saveFile = new File(systemProperties.getFileLocation() + "/excel/" + dateStr);if (!saveFile.exists()) {saveFile.mkdirs();}FileOutputStream fos;String filePath;try {//4.写入文件filePath = saveFile + "\\过磅记录.xlsx";fos = new FileOutputStream(filePath);workbook.write(fos);fos.close();JSONObject data = new JSONObject();data.put("filepath", filePath);return ResultUtil.success("数据导出成功!", data);} catch (FileNotFoundException e) {logger.error("FileNotFoundException={}", e.getMessage());return ResultUtil.error("数据导出失败!" + e.getMessage());} catch (IOException e) {logger.error("IOException={}", e.getMessage());return ResultUtil.error("数据导出失败!" + e.getMessage());}}/*** 获取所有数据封装成mapList** @param poundLogDto 查询条件* @param types       进出货类型 0:进货 1:出货 null:全选* @return mapList*/@Overridepublic List<Map<String, Object>> findAllMapByCondition(PoundLogDto poundLogDto, Integer types) {if (Integer.valueOf(PoundLogConstant.TYPES_IN).equals(types) || Integer.valueOf(PoundLogConstant.TYPES_OUT).equals(types)) {poundLogDto.setTypes(types);}List<PoundLog> poundLogList = httpService.findAllLogByCondition(poundLogDto);if (null == poundLogList) {return new ArrayList<>(0);}List<Map<String, Object>> mapList = new ArrayList<>(poundLogList.size());for (PoundLog poundLog : poundLogList) {Map<String, Object> mapOne = new HashMap<>(100);if (StringUtils.isNotEmpty(poundLog.getShopCode())) {WorkShop workShop = workShopMapper.findByShopCode(poundLog.getShopCode());poundLog.setWorkShopName(workShop.getShopName() + "-" + workShop.getOrganization().getOrgName());mapOne.put("workShopName", poundLog.getWorkShopName());}mapOne.put("createTime", DateUtil.parseToFormatDateString(poundLog.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));mapOne.put("goodsName", poundLog.getGoodsName());mapOne.put("compName", poundLog.getCompName());mapOne.put("orgName", poundLog.getUnitName());mapOne.put("plateNo", poundLog.getPlateNo());mapOne.put("grossWeight", poundLog.getGrossWeight());mapOne.put("tareWeight", poundLog.getTareWeight());mapOne.put("netWeight", poundLog.getNetWeight());mapOne.put("diffWeight", poundLog.getDiffWeight());mapOne.put("returnWeightTotal", poundLog.getReturnWeightTotal());mapOne.put("unit", "公斤");mapOne.put("remark", poundLog.getRemark());mapOne.put("poundLogNo", poundLog.getPoundLogNo());mapOne.put("inspNo", poundLog.getInspNoList());mapOne.put("month", DateUtil.getMonth(poundLog.getCreateTime()) + "月");mapList.add(mapOne);}return mapList;}

excel模板

模板指令介绍

模板是处理复杂Excel的简单方法,复杂的Excel样式,可以用Excel直接编辑,完美的避开了代码编写样式的雷区,同时指令的支持,也提了模板的有效性 下面列举下EasyPoi支持的指令以及作用,最主要的就是各种fe的用法

  1. 空格分割
  2. 三目运算 {{test ? obj:obj2}}
  3. n: 表示 这个cell是数值类型
  4. {{n:}}le: 代表长度{{le:()}}
  5. 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
  6. fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
  7. fn: 格式化数字 {{fn:(obj;###.00)}}
  8. fe: 遍历数据,创建row!fe: 遍历数据不创建row$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入#
  9. fe: 横向遍历v_fe: 横向遍历值
  10. !if: 删除当前列 {{!if:(test)}}
  11. 单引号表示常量值 '' 比如'1' 那么输出的就是 1
  12. &NULL& 空格
  13. ]] 换行符
  14. 多行遍历导出
  15. sum: 统计数据

整体风格和el表达式类似,大家应该也比较熟悉 采用的写法是{{}}代表表达式,然后根据表达式里面的数据取值

关于样式问题

easypoi不会改变excel原有的样式,如果是遍历,easypoi会根据模板的那一行样式进行复制

友情链接

  • easypoi文档
  • git项目地址

转自:
作者:小土豆哥哥
链接:https://www.jianshu.com/p/50da077c3e32

Easypoi 报表模板设置相关推荐

  1. vb.net怎么调用fastreport报表_财务分析-企业财务管理报表模板制作实现智能化的财务运营...

    随着我国经济的不断发展,企业在市场环境中的竞争压力也越来越大,只有具备充足的活力和竞争力的企业才可以在竞争激烈的市场环境中处于不败之地.财务分析作为企业财务管理的重要手段之一,它能够为企业的一切财务活 ...

  2. 将报表模板中数据集的数据源名称与服务器中的数据源名称修改一致.,连接数据库,服务器端的几个常见错误...

    1错误关键字:数据集ds1中未设定数据源名称 现象: 产生数据工厂:com.runqian report4.dataset.SQLDataSetFactory 失败:数据集中,数据集ds1 中未设定数 ...

  3. 导出excel 数据取一次合理还是分页取合理_一张报表模板替代数百张Excel表格,用它让报表工作更轻松...

    要问现代职场人,必备工作技能是什么?Excel技能当仁不让,数据分析.总结汇报.信息传达,统统离不开.但是在日常工作中,Excel也有着它的局限性,以月度数据汇报为例,每月都需重新做表统计,其实内容还 ...

  4. 教你如何做出一份报表:流程分析之报表模板

    上周我们谈了流程分析之报表数据源,现在说说报表模板. 进入后台管理----H3管理中心----流程分析----报表模板. 把鼠标悬浮在报表模板上,会显现出五个icon,分别是新增目录.明细汇总表.交叉 ...

  5. 拥有数据报表模板,不再愁如何制作数据报表

    制作数据报表首先需要明确自己需要分析的数据,然后对数据进行处理,虽然看起来很基础,但是这些却需要一些基本功.有了数据,下一步就是进行数据呈现,也就是制作我们的数据报表啦. 随着数据量的增多,数据报表分 ...

  6. easypoi根据模板导出word

    easypoi根据模板导出word 在工作中,模板导出必不或缺,实现模板导出的第三方工具包也有很多.例如:poi.freemaker.hutool的word工具类以及第三方报表工具.这里我简单介绍一下 ...

  7. 【设计模式】模板模式实现报表模板

    需求:报表生产都大同小异,流程一样,但是具体的实现不同(如数据不同,报表名不同,报表列不同). 如果每一次报表都复制粘贴就太码农.所以很自然的想到了模板模式. 设计: 1.抽象类包含方法createR ...

  8. 【有奖征集】报表模板库邀您提反馈,轻松赢取P30!

    >>立即参赛 赛事初衷 大数据时代,数据的价值愈发彰显,什么样的报表才能真正帮助业务决策?这几乎是所有信息化建设的企业和个人都在思考的问题. 作为报表领域标杆企业,葡萄城于2017年推出了 ...

  9. 使用easypoi 导出模板 图片填充

    使用easypoi 导出模板 图片填充 官网地址:EasyPOI 以下就是模板常用的指令: 三目运算 {{test ? obj:obj2}} n: 表示 这个cell是数值类型 {{n:}} le: ...

  10. Easypoi使用模板导出文档或excel表格详解

    Easypoi使用模板导出docx文档或excel表格详解 **doc或docx文档的模板导出** **Excel的模板导出** 话不多说先上依赖 <dependency><grou ...

最新文章

  1. 相机自动对焦AF原理
  2. win7下安装redies
  3. PAT_B_1006 换个格式输出整数
  4. 电子老鼠闯迷宫pascal解题程序
  5. mysql5.0 php_php怎么连接mysql5.0?
  6. java打印数组_Java中打印数组内容的方式有哪些?
  7. html+css+js实现关键词随机图片
  8. PHP数组实现菜单无限极分类
  9. AJAX视频教程下载
  10. npm cnpm下载
  11. oracle gis费用,MapGIS 10 for Desktop 标准版_Oracle
  12. HP台式计算机不能启动,惠普电脑不能启动怎么处理
  13. 机器视觉硬件之光源选型以及打光技巧
  14. python用函数对列表删除_关于python:如何使用range()函数从列表中删除项目时迭代列表?...
  15. [TypeScript]中字符和ASCII码转换
  16. 华强北airpods三代连接安卓手机没声音_安卓手机体验华强北的顶配AirPods,“翻车”还是真香?...
  17. SystemVerilog学习笔记1 ---《数据类型》
  18. 气象背景场_天气预报的诞生背景
  19. html实现相册效果,图片播放(相册效果) - CSS实现
  20. 制作“大白菜”启动U盘教程

热门文章

  1. 7月SCI/SSCI期刊变动,警惕这5本被剔除
  2. numpy中的multipy, matmul, dot的区别
  3. Android adb 常用命令
  4. 微型计算机原理与接口技术 考题,微机原理与接口技术试题答案
  5. The `certs(%1$s)` contains the merchant‘s certificate serial number(%2$s) which is not allowed here.
  6. vue中打印表格功能(重点是表格制作)
  7. 软件设计师-2.程序设计语言
  8. STm32驱动74HC595引脚图时序图工作原理
  9. 超星高级语言程序设计实验作业 (实验02 分支与循环程序设计)(一)
  10. 使用google service定位服务