为什么会写Easypoi

以前的以前(岁月真TMD的快)我虽然写了不少代码但还是很少写poi,然后跳到一家公司之后就和业务人员聊上了,来这个需要个报表,这个报表样式是这样的,这个表头是这样的,就这样我写了大量的poi代码,每次都是大量的篇幅,copy to copy,无聊的一逼,然后加入了jeecg,jeecg中有一个小的工具类,虽然我也不知道是谁写的,然是可以用注解搞定最简单的导出,突然豁然开朗,我可以完善,让我从报表的苦海当中脱离出来,这样我花了一周的时间做了第一个版本支持导入导出放到了jeecg,发现还是不错的,慢慢的用的人越来越多,我就把这块独立出来了,再然后有人提出了模板,然后就加入了模板功能,提出了word的需求,加入了word的功能,后来工作忙了虽然没再参与jeecg,但还是一直维持这easypoi的更新,根据见识的增长也不断的重构这代码,直到现在

独特的功能

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

小白如何开始

  • 下载demo运行看看,基本上常见的用用法都在里面easypoi-test
  • 查看几个*Util的用法,Easypoi的主要输出就是这个
  • 看看注解的意思
  • 看看模板的标签用法
  • 可以出师了

Easypoi 为谁而开发

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

都可以使用easypoi

Easypoi的目标是什么

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

1.3 使用

  • 1.easypoi 父包--作用大家都懂得
  • 2.easypoi-annotation 基础注解包,作用与实体对象上,拆分后方便maven多工程的依赖管理
  • 3.easypoi-base 导入导出的工具包,可以完成Excel导出,导入,Word的导出,Excel的导出功能
  • 4.easypoi-web 耦合了spring-mvc 基于AbstractView,极大的简化spring-mvc下的导出功能
  • 5.sax 导入使用xercesImpl这个包(这个包可能造成奇怪的问题哈),word导出使用poi-scratchpad,都作为可选包了

如果不使用spring mvc的便捷福利,直接引入easypoi-base 就可以了,easypoi-annotation

1.4 测试项目

测试这个事情真不是个容易的事情

测试项目包括两块 Junit 的常见测试和spring 的view测试

1.spring view测试

运行application就可以了,访问界面,然后看到界面

对应的代码在view下面

2.Junit的测试目录结构如下

  • tohtml html预览测试
  • view 导出的view测试
  • cache 自定义缓存测试
  • html html互转测试
  • test
  • excel
  • read 读取Excel测试
  • check 导入检查测试
  • hanlder 导入数据处理
  • img 含图片导入测试
  • styler 导出样式自定义测试
  • template 模板导出测试
  • sum 导出含统计测试
  • test 导出测试
  • groupname groupname 属性测试
  • img 导出图片测试
  • pdf pdf测试
  • word word导出测试
  • util util 内部测试

目前的测试覆盖率

2. Excel 注解版

2.1 Excel导入导出

Excel的导入导出是Easypoi的核心功能,前期基本也是围绕这个打造的,主要分为三种方式的处理,其中模板和Html目前只支持导出,因为支持Map.class其实导入应该是怎样都支持的

  • 注解方式,注解变种方式
  • 模板方式
  • Html方式

下面分别就这三种方式进行讲解

2.2 注解

注解介绍

easypoi起因就是Excel的导入导出,最初的模板是实体和Excel的对应,model--row,filed--col 这样利用注解我们可以和容易做到excel到导入导出

经过一段时间发展,现在注解有5个类分别是

  • @Excel 作用到filed上面,是对Excel一列的一个描述
  • @ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示
  • @ExcelEntity 表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段
  • @ExcelIgnore 和名字一样表示这个字段被忽略跳过这个导导出
  • @ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理

注解中的ID的用法

这个ID算是一个比较独特的例子,比如

@ExcelTarget("teacherEntity")public class TeacherEntity implements java.io.Serializable { /** name */ @Excel(name = "主讲老师_teacherEntity,代课老师_absent

easypoi 多sheet导入_程序员接私活利器 玩转excel导入导出相关推荐

  1. 程序员接私活_程序员接私活平台(程序员接外包网站)

    对于这个问题,我感觉我比较有发言权,因为我接触过很多这方面的东西.在开始讲之前,我可以肯定的告诉大家,一个非常残酷的答案,那就是没有任何一家平台可以让你比较稳定的去接单. 传统的接活平台 比如传统的接 ...

  2. 程序员接私活_程序员接私活必备的11个开源项目!

    目前我已经开发私活已经很多了,如APP.公众号.网站.小程序 他们都需要后台管理UI,如果从0开始开发一套太费时间了 网上开源的有现成的轮子干嘛不用了 下面我分享11个Github优秀的UI轮子,真的 ...

  3. java项目合同制没做完扣钱吗_程序员接私活,怎样防止做完不给钱?

    首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况. 那么 ...

  4. java私活_程序员接私活,怎样防止做完不给钱?

    首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况. 那么 ...

  5. java程序员接私活_Java程序员接私活的项目-JeecgBoot

    Java程序员接私活的项目-JeecgBoot 近两年微服务大火,而对于Java程序员可实操的微服务框架就是SpringBoot,为什么大家都在使用微服务呢?- -第一,项目运行简单.相比较之前的 J ...

  6. Android 强烈推荐:程序员接私活那点事

    今天周末在家宅着,并不是我不想运动,是因为北京的雨雪交加导致我想在家写文章,不过想想给大家写文章还是蛮惬意的,望一眼窗外,看一眼雪景,指尖在键盘上跳动,瞬间有种从屌丝程序员转变成了小姑娘们都羡慕的文艺 ...

  7. 前端学习与“IT界大佬告诉你,程序员接私活的7大平台利器”

    mark一下,博主名称"前端入门到精通",博客标题:"IT界大佬告诉你,程序员接私活的7大平台利器" https://blog.csdn.net/zwjweb/ ...

  8. 程序员接私活外包途径、注意事项、方法

    都是打工人,都想多赚点钱,笔者也如此,去年年底拿了房,有车贷,有房贷,然后拿房后又要装修,买家电,还没结婚,因此有些许经济压力.于是乎,在朋友介绍下,接了木渎一个非标自动化上位机软件开发的活.答应付款 ...

  9. 程序员接私活平台汇总,有技术就有钱!

    程序员接私活平台汇总,有技术就有钱! 前言 关于程序员接私活,社会各界说法不一.按照作者的观点来说如果你确实急用钱,价格又合适,那就去做.如果不怎么缺钱,那就接私活之前要好好考虑.私活的钱不好挣是一个 ...

最新文章

  1. 微服务网关解决方案调研和使用总结 专题
  2. [Matlab] 线性卷积圆周卷积代码实现
  3. node第三方登陆github(express)
  4. 前端相对路径 与后端相对路径的区分
  5. linux GUI程序开发
  6. 集群中几种session同步解决方案的比较[转]
  7. 语音特征提取: MFCC的理解
  8. java普通类获取session_springboot普通类中如何获取session?
  9. 【云计算】K8S DaemonSet 每个node上都运行一个pod
  10. 把view放在地图覆盖物上
  11. C++11新特性(3)
  12. ADS8364 VHDL程序正式版
  13. sscom串口调试助手
  14. 基于华为云IoT设计的智能门锁
  15. 计算机网络中最常用的三种设备,计算机网络基础试卷6
  16. 【信号检测】基于matlab双稳随机共振微弱信号检测【含Matlab源码 1701期】
  17. 关于MAC安装yarn
  18. 攻防演练比赛中攻击队常用的测试方法列举
  19. www.skymaya.com:8080/index.php,www_skymaya_com
  20. 转载---SQL Server XML基础学习之7--XML modify() 方法对 XML 数据中插入、更新或删除...

热门文章

  1. Java异常中受检异常非受检异常与RuntimeException异常关系
  2. 银行存取款系统的设计与实现c语言,【银行|银行存取款管理系统设计】取款|管理|系统|设计-傻大方...
  3. Linux 下 MediaWiki 的安装使用
  4. 花费一天时间基于Vue创建的epub小说阅读器效果展示及源码分享
  5. python os模块system_python 中 os.system 的本质 | 编程知识2
  6. TCP/IP / 网关 IP 和 DNS 服务器 IP 为什么可以一样?
  7. 到底什么是AI0T?现在不少头部企业都在打造AIOT概念,今天我们就梳理一下AIOT产业都包含了哪些,启明云端在AIOT中,能提供哪些解决方案?
  8. 支持自定义的离线语音模块WT516P6Core 串口协议使用说明
  9. linux可以生成pdb调试信息吗,Linux通过使用pdb简单调试python计划
  10. linux chown命令格式,在Linux上如何使用chown命令 (文件所有权)