周末撸了个Excel框架,现已开源,yyds!!
大家好,我是冰河~~
不管是传统软件企业还是互联网企业,不管是管理软件还是面向C端的互联网应用。都不可避免的会涉及到报表操作,而对于报表业务来说,一个很重要的功能就是将数据导出到Excel。
如果我们在业务代码中,嵌入很多导出Excel的逻辑,那我们的代码就会变得异常臃肿,不利于维护,而且导出Excel的核心逻辑基本相同。那我们能否将导出Excel的核心逻辑封装成一个工具,当我们需要导出Excel时,只是向工具简单的传入数据呢?于是乎,mykit-excel诞生了!
mykit-excel的github链接地址为:
欢迎各位小伙伴Star和Fork源码,也欢迎大家pr你牛逼哄哄的代码,我们一起来养肥它!
如果文章对你有点帮助,小伙伴们点赞、收藏、评论和分享,走起呀~~
框架简述
mykit-excel插件是通用的Excel导入导出框架,旨在提供通用的Excel导入导出功能,支持以注解方式选择JavaBean中的部分字段导出,并提供注解指定Excel列标题和排序功能。
框架结构
- mykit-excel-annotation: mykit-excel框架的注解模块,提供注解标识类中的哪些字段需要导出到Excel
- mykit-excel-common: mykit-excel框架的通用工具类,提供通用的工具模板
- mykit-excel-servlet: mykit-excel框架提供的Web模块,能够支持Web请求导出Excel
- mykit-excel-springmvc: mykit-excel框架提供的SpringMVC模块,能够支持Web请求导出Excel
- mykit-excel-test: mykit-excel框架提供的常规测试模块
- mykit-excel-springboot: mykit-excel框架提供的SpringBoot测试模块
测试用例
(1)测试常规导出Excel工具类的Java类为:io.mykit.excel.springboot.normal.export.TestExportExcelUtils
,直接运行该类即可。
(2)测试注解导出Excel工具类的Java类为:io.mykit.excel.springboot.annotation.export.TestAnnotationExportExcelUtils
,直接运行该类即可。
(3)测试SpringMVC导出Excel的Java类为io.mykit.excel.springboot.normal.springmvc.NormalExportExcelContorller
,运行SpringBoot的启动类io.mykit.excel.springboot.MykitExcelCoreApplication
之后,使用resources/html
目录下的normalExportExcel.html文件导出Excel即可。如果设置的IP和端口与mykit-excel-springboot模块不同,则修改normalExportExcel.html文件中的IP和端口即可。
(4)测试基于注解导出Java类为io.mykit.excel.springboot.annotation.springmvc.AnnotationExportExcelController
,运行SpringBoot的启动类io.mykit.excel.springboot.MykitExcelCoreApplication
之后,使用resources/html
目录下的annotationExportExcel.html文件导出Excel即可。如果设置的IP和端口与mykit-excel-springboot模块不同,则修改annotationExportExcel.html文件中的IP和端口即可。
注解说明
如果使用注解方式导出Excel,则需要在JavaBean的属性字段上添加@ExcelColumn注解,此注解中有三个属性,分别如下:
- isExport:表示是否将当前字段导出到Excel,true:是;false:否
- title:导出到Excel时的当前列的标题;
- sort:当前字段导出到Excel的列时,在Excel中的位置,值越小,当前列越靠前。
使用方式
普通方式导出Excel
如果是普通的Java项目,只是将Excel文件导出到本地磁盘,则只需要在项目的pom.xml文件中增加如下配置
<dependency>
<groupId>io.mykit.excel</groupId>
<artifactId>mykit-excel-common</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
创建测试JavaBean
@Data
public class Student implements Serializable {
private static final long serialVersionUID = -2987207599880734028L;
private int id;
private String name;
private String sex;
public Student(){
}
public Student(int id, String name, String sex){
this.id = id;
this.name = name;
this.sex = sex;
}
}
接下来,在程序中按照如下方式导出Excel文件即可
public static void main(String[] args) throws Exception{
ExportExcelUtils<Student> utils = new ExportExcelUtils<Student>();
List<Student> list = new ArrayList<Student>();
for (int i = 0; i < 10; i++) {
list.add(new Student(111,"张三","男"));
list.add(new Student(111,"李四","男"));
list.add(new Student(111,"王五","女"));
}
String[] columnNames = { "ID", "姓名", "性别" };
utils.exportExcel("用户导出", columnNames, list, new FileOutputStream("E:/test.xls"), ExportExcelUtils.EXCEL_FILE_2003);
}
导出的文件如下所示
注解方式导出Excel
如果是普通的Java项目,以注解方式将Excel文件导出到本地磁盘,则只需要在项目的pom.xml文件中增加如下配置
<dependency>
<groupId>io.mykit.excel</groupId>
<artifactId>mykit-excel-common</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
创建测试JavaBean
(1) 创建父类JavaBean
@Data
public class Person implements Serializable {
private static final long serialVersionUID = 3251965335162340137L;
@ExcelColumn(isExport = true, title = "编号", sort = 2)
private String id ;
@ExcelColumn(isExport = true, title = "姓名", sort = 3)
private String name;
public Person(){
}
public Person(String id, String name){
this.id = id;
this.name = name;
}
}
(2) 创建子类JavaBean
@Data
public class Student extends Person{
private static final long serialVersionUID = -6180523202831503132L;
@ExcelColumn(isExport = false, title = "班级编号", sort = 1)
private String classNo;
private Integer score;
@ExcelColumn(isExport = true, title = "爱好", sort = 5)
private String hobby;
public Student(){
}
public Student(String id, String name, String classNo, Integer score, String hobby){
super(id, name);
this.classNo = classNo;
this.score = score;
this.hobby = hobby;
}
}
接下来,在程序中按照如下方式导出Excel文件即可
public class TestAnnotationExportExcelUtils {
public static void main(String[] args) throws FileNotFoundException {
// 准备数据
List<Student> list = new ArrayList<Student>();
for (int i = 1; i <= 10; i++) {
list.add(new Student("00" + i, "张三", "001", 100, "篮球"));
}
AnnotationExcelExportUtils<Student> utils = new AnnotationExcelExportUtils<Student>();
utils.exportExcel("用户导出", list, new FileOutputStream("e:/E:/test.xls"), Student.class, AnnotationExcelExportUtils.EXCEL_FILE_2003);
}
}
导出的文件如下所示
Web方式导出Excel
如果是基于Java Web或Spring MVC项目,需要导出Excel,则需要在项目的pom.xml文件中,加入如下配置
<dependency>
<groupId>io.mykit.excel</groupId>
<artifactId>mykit-excel-servlet</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
创建测试JavaBean
@Data
public class Student implements Serializable {
private static final long serialVersionUID = -2987207599880734028L;
private int id;
private String name;
private String sex;
public Student(){
}
public Student(int id, String name, String sex){
this.id = id;
this.name = name;
this.sex = sex;
}
}
接下来,在程序中按照如下方式导出Excel文件即可
@RequestMapping("/excel")
public void getExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 准备数据
List<Student> list = new ArrayList<Student>();
for (int i = 0; i < 10; i++) {
list.add(new Student(111,"张三","男"));
list.add(new Student(111,"李四","男"));
list.add(new Student(111,"王五","女"));
}
String[] columnNames = { "ID", "姓名", " 性别"};
String fileName = "springboot_excel";
ExportExcelWrapper<Student> util = new ExportExcelWrapper<Student>();
util.exportExcel(fileName, fileName, columnNames, list, response, ExportExcelUtils.EXCEL_FILE_2003);
}
导出的文件如下所示
基于注解的Web方式导出Excel
如果是基于Java Web或Spring MVC项目,需要基于注解导出Excel,则需要在项目的pom.xml文件中,加入如下配置
<dependency>
<groupId>io.mykit.excel</groupId>
<artifactId>mykit-excel-servlet</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
创建测试JavaBean
(1) 创建父类JavaBean
@Data
public class Person implements Serializable {
private static final long serialVersionUID = 3251965335162340137L;
@ExcelColumn(isExport = true, title = "编号", sort = 2)
private String id ;
@ExcelColumn(isExport = true, title = "姓名", sort = 3)
private String name;
public Person(){
}
public Person(String id, String name){
this.id = id;
this.name = name;
}
}
(2) 创建子类JavaBean
@Data
public class Student extends Person{
private static final long serialVersionUID = -6180523202831503132L;
@ExcelColumn(isExport = false, title = "班级编号", sort = 1)
private String classNo;
private Integer score;
@ExcelColumn(isExport = true, title = "爱好", sort = 5)
private String hobby;
public Student(){
}
public Student(String id, String name, String classNo, Integer score, String hobby){
super(id, name);
this.classNo = classNo;
this.score = score;
this.hobby = hobby;
}
}
接下来,在程序中按照如下方式导出Excel文件即可
@Controller
@RequestMapping(value = "/annotation/export")
public class AnnotationExportExcelController {
@RequestMapping("/excel")
public void getExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 准备数据
List<Student> list = new ArrayList<Student>();
for (int i = 1; i <= 10; i++) {
list.add(new Student("00" + i, "张三", "001", 100, "篮球"));
}
String fileName = "springboot_excel";
ExportExcelWrapper<Student> wrapper = new ExportExcelWrapper<Student>();
wrapper.annotationExportExcel(fileName, fileName, list, Student.class, response, ExportExcelWrapper.EXCEL_FILE_2003);
}
}
导出的文件如下所示
前端测试代码
前端测试代码放在mykit-excel-springboot模块的src/main/resources/html
目录下,修改html文件中的连接地址后,将其放在Tomcat或其他Web容器中,进行测试即可。
测试方式
常规测试
直接运行mykit-excel-springboot项目中的io.mykit.excel.springboot.normal.export.TestExportExcelUtils
类即可
基于注解的常规测试
直接运行mykit-excel-springboot项目中的io.mykit.excel.springboot.annotation.export.TestAnnotationExportExcelUtils
类即可
Web测试
(1)启动mykit-excel-springboot项目,即运行mykit-excel-springboot项目中的io.mykit.excel.springboot.MykitExcelCoreApplication
类
(2)将mykit-excel-springboot项目的src/main/resources/html
下的normalExportExcel.html文件发布到Tomcat等Web容器中访问normalExportExcel.html文件的连接地址, 打开页面点击“Submit”按钮即可。
基于注解的Web测试
(1)启动mykit-excel-springboot项目,即运行mykit-excel-springboot项目中的io.mykit.excel.springboot.MykitExcelCoreApplication
类。
(2)将mykit-excel-springboot项目的src/main/resources/html
下的annotationExportExcel.html文件发布到Tomcat等Web容器中访问annotationExportExcel.html文件的连接地址, 打开页面点击“Submit”按钮即可。
如果你想进大厂,想升职加薪,或者对自己现有的工作比较迷茫,都可以加我微信:sun_shine_lyz交流,希望我的一些经历能够帮助到大家~~
好了,今天就到这儿吧,我是冰河,我们下期见~~
周末撸了个Excel框架,现已开源,yyds!!的更多相关文章
- 美团客户端响应式框架EasyReact开源啦
前言 EasyReact 是一款基于响应式编程范式的客户端开发框架,开发者可以使用此框架轻松地解决客户端的异步问题. 目前 EasyReact 已在美团和大众点评客户端的部分业务中进行了实践,并且持续 ...
- 基于.NET平台常用的框架和开源程序整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中 也积累了一些开源的组件,就目前想到的先整理于此,如果再想到, ...
- 我把这个贼好用的Excel导出工具开源了!!
写在前面 不管是传统软件企业还是互联网企业,不管是管理软件还是面向C端的互联网应用.都不可避免的会涉及到报表操作,而对于报表业务来说,一个很重要的功能就是将数据导出到Excel.如果我们在业务代码中, ...
- 新渲染引擎、自定义设计和高质量用户体验的样例应用 Wonderous 现已开源
探索世界奇观,并体验 Flutter 的强大之处. Flutter 的愿景是让你能够在空白画布上绘制出不受限制的精美应用.最近,通过与 gskinner 团队的通力合作,我们打造了一个全新的移动应用 ...
- plain framework 1(简约框架)一款主要用于网络(游戏)开发的C/C++框架 即将开源发布
在我们的日常开发中,我们往往会遇到这种情况,当我们换了一个开发环境时很可能会重新利用一套新的框架进行开发.由于不同框架有着不同的接口,所以我们不得不花时间再次熟悉这些接口,这将造成开发时间上的重复,而 ...
- android开源框架和开源项目(转)
特效: http://www.androidviews.net/ http://www.theultimateandroidlibrary.com/ 常用效果: 1. https://github.c ...
- Dapeng框架-开源高性能分布式微服务框架
我们公司性质是新零售,公司也有专门的框架组.这群大牛自己开发了一整套分布式微服务框架.我们也在使用这套框架,有很多心得体会. 该框架既Dapeng也!开源github地址:https://github ...
- 基于Odoo框架的开源在线客服系统
cs_base 开源客服系统,基于 Odoo 的客服模块 cs_base 是在强大的 Odoo 框架的基础上实现的一个在线客服应用 基础模块包含完整的 Web 在线客服的接入,坐席管理等,通过扩展可方 ...
- TP5框架,开源小程序商城源码,前端+后台完整版
CRMEB微信公众号商城小程序商城数据同步,带积分.优惠券.秒杀.砍价.分销等功能,更是一套方便二次开发的框架 开源地址:https://github.crmeb.net/u/crmeb 商城演示后台 ...
随机推荐
- 车载以太网第二弹|测试之实锤-AVB测试实践
背景 AVB(Audio Video Bridging)音视频桥接,是由IEEE 802.1标准委员会的IEEE AVB任务组制定的一组技术标准,包括精确时钟同步.带宽预留和流量调度等协议规范,用于构 ...
- 人工水母搜索算法--JS
1. 人工水母算法原理背景 水母生活在世界上不同深度和温度的水中.它们酷似钟状,一些水母的直径小于1cm,然有些水母直径则非常大.它们有各种各样的颜色.大小和形状.大多数水母偏好海洋环境.它们进食的方 ...
- PMP变更流程
变更流程:
- CF74A Room Leader 题解
Content 一场 CF 比赛有 \(n\) 个人,有 ABCDE 五道题目.在比赛过程中,参赛者还可以随时互相攻击,成功一次加 \(100\) 分,失败一次扣 \(50\)分,已知第 \(i\) ...
- CF106A Card Game 题解
Content 一种纸牌游戏有许多张卡牌,每张卡牌有一个套装(S,H,D和 C)和一个等级(按升序排列6,7,8,9,T, J,Q,K,A). 规定以下情况卡牌 A 才能赢卡牌 B: A 有王牌套装, ...
- Nginx加载新的模块,编译报错记录
参考:https://www.cnblogs.com/Leechg/p/9969000.html ---------如下我的操作记录--------------- nginx -V查看当前nginx信 ...
- CPU中断数查看与网卡中断绑核
CPU中断数查看 多核CPU每个核心CPU发生中断的数量查看 # mpstat -I SUM -P ALL 1 3 Linux 5.4.0-40-generic (verify-new-511kern ...
- 【RTOS】FreeRTOS中的任务堆栈溢出检测机制
目录 前言 任务堆栈 堆栈溢出 任务堆栈溢出检测机制 API 两种堆栈溢出检测方式 堆栈溢出钩子函数 内核何时检测任务堆栈溢出 任务堆栈溢出检测存在的局限性 前言 注意:本笔记发布时可能忘记补充查看d ...
- linux(centos)系统安装activemq
activemq是消息中间件,可以用来 解耦.消峰.异步 需要先安装jdk环境:https://www.cnblogs.com/pxblog/p/10512886.html 1.下载文件 (也可以直接 ...
- Linux(Centos)安装maven
下载maven安装包 官网地址:http://maven.apache.org/download.cgi 也可以使用 https://yvioo.lanzous.com/ivNVrfcs6ja 把文件 ...