您当前的位置:首页 > 电脑百科 > 软件技术 > office

周末撸了个Excel框架,现已开源,yyds

时间:2021-09-16 10:20:30  来源:微信公众号  作者: 冰河技术
原文出自:公众号 冰河技术 原文链接:https://mp.weixin.qq.com/s/nNKh4lQOZGRylGhxi7uC4g

 

不管是传统软件企业还是互联网企业,不管是管理软件还是面向C端的互联网应用。都不可避免的会涉及到报表操作,而对于报表业务来说,一个很重要的功能就是将数据导出到Excel

如果我们在业务代码中,嵌入很多导出Excel的逻辑,那我们的代码就会变得异常臃肿,不利于维护,而且导出Excel的核心逻辑基本相同。那我们能否将导出Excel的核心逻辑封装成一个工具,当我们需要导出Excel时,只是向工具简单的传入数据呢?于是乎,mykit-excel诞生了!

 

mykit-excel的github链接地址为: https://github.com/sunshinelyz/mykit-excel

 

欢迎各位小伙伴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文件中增加如下配置

io.mykit.excel mykit-excel-common 1.0.0-SNAPSHOT

创建测试JavaBean

@Datapublic 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 utils = new ExportExcelUtils(); List list = new ArrayList(); 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文件中增加如下配置

io.mykit.excel mykit-excel-common 1.0.0-SNAPSHOT

创建测试JavaBean

(1) 创建父类JavaBean

@Datapublic 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

@Datapublic 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 list = new ArrayList(); for (int i = 1; i <= 10; i++) { list.add(new Student("00" + i, "张三", "001", 100, "篮球")); } AnnotationExcelExportUtils utils = new AnnotationExcelExportUtils(); utils.exportExcel("用户导出", list, new FileOutputStream("e:/E:/test.xls"), Student.class, AnnotationExcelExportUtils.EXCEL_FILE_2003); }}

导出的文件如下所示


 

Web方式导出Excel

如果是基于Java Web或Spring MVC项目,需要导出Excel,则需要在项目的pom.xml文件中,加入如下配置

io.mykit.excel mykit-excel-servlet 1.0.0-SNAPSHOT

创建测试JavaBean

@Datapublic 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 list = new ArrayList(); 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 util = new ExportExcelWrapper(); util.exportExcel(fileName, fileName, columnNames, list, response, ExportExcelUtils.EXCEL_FILE_2003);}

导出的文件如下所示


 

基于注解的Web方式导出Excel

如果是基于Java Web或Spring MVC项目,需要基于注解导出Excel,则需要在项目的pom.xml文件中,加入如下配置

io.mykit.excel mykit-excel-servlet 1.0.0-SNAPSHOT

创建测试JavaBean

(1) 创建父类JavaBean

@Datapublic 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

@Datapublic 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 list = new ArrayList(); for (int i = 1; i <= 10; i++) { list.add(new Student("00" + i, "张三", "001", 100, "篮球")); } String fileName = "springboot_excel"; ExportExcelWrapper wrapper = new ExportExcelWrapper(); 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”按钮即可。



Tags:Excel框架   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
不管是传统软件企业还是互联网企业,不管是管理软件还是面向C端的互联网应用。都不可避免的会涉及到报表操作,而对于报表业务来说,一个很重要的功能就是将数据导出到Excel。...【详细内容】
2021-09-16  Tags: Excel框架  点击:(72)  评论:(0)  加入收藏
▌简易百科推荐
Excel常用电子表格公式大全   一、Excel基本公式   1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,"重复","")。   2、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,"200...【详细内容】
2021-12-21  楠方儿i    Tags:Excel   点击:(10)  评论:(0)  加入收藏
最近这段时间,我们三易生活收到了一些来自读者朋友的求助,在他们选购电脑时发现,有的设备出厂预装了“Microsoft 365”,而另一些则预装的是“Office 2021”。对于这两款同为微软...【详细内容】
2021-12-14  三易生活    Tags:Office   点击:(25)  评论:(0)  加入收藏
我们在做问卷调差或者填写一些资料表的时候,会遇到一些word文档中有小方框【□】,需要在里面打钩【&radic;】,那么是如何操作呢,今天和大家分享一下。方法一1,打开我们需要操作...【详细内容】
2021-11-26  小七哆来咪发唆    Tags:word   点击:(35)  评论:(0)  加入收藏
试想一下,用 Excel 管理项目的时候,会有很严格的日期安排,而且项目中的各细目经常是并行作业的,这就意味着日期不一定是排序的 。 那么事项太多如何更好管理,而不至于遗忘关键节...【详细内容】
2021-11-16  Excel学习世界    Tags:Excel   点击:(21)  评论:(0)  加入收藏
与大家分享一下有关制作身份证电子版时四周圆角处理的具体方法。方法/步骤首先,我们利用WPS打开相应的身份证扫描件,选中图片,点击“裁剪图片”按钮。 此时将显示“裁剪方式”...【详细内容】
2021-11-09  数字传媒微课堂    Tags:身份证   点击:(196)  评论:(0)  加入收藏
WPS是我们的常用办公软件之一,很多人在使用WPS打印功能的时候,经常会遇到多种多样的打印小问题,今天就为大家简单讲解下打印面板的各个小功能的作用。打印文档方法: 在左上角“W...【详细内容】
2021-11-02    21世纪教育网  Tags:WPS   点击:(31)  评论:(0)  加入收藏
前言:说起办公,就会想到三大办公软件,Word、Excel、PPT。这些软件的使用是有技巧的,学会使用技巧工作效率就会提高,加班自然就能避免。 今天就来分享其中之一:Word办公的7个小技巧...【详细内容】
2021-11-02  小杰好厉害呀    Tags:Word   点击:(52)  评论:(0)  加入收藏
我们使用 Word 的时候,页面上通常会有一些默认的符号,平时大家司空见惯了,可能没有多加留意,更不知道如何去除这些符号。 今天教大家两个 Word 技巧,将 Word 中默认的一些标记符...【详细内容】
2021-11-01  Excel学习世界    Tags:Word   点击:(48)  评论:(0)  加入收藏
经常用 Excel 的表哥表姐们,想必都知道「下拉菜单」这个神器,鼠标点点点,就能轻轻录入数据:▲ 一级下拉菜单 它的制作方法也很简单,用【数据验证】功能可以直接实现! 有小伙伴表示...【详细内容】
2021-10-27  秋叶Excel    Tags:Excel   点击:(41)  评论:(0)  加入收藏
在工作中, 我们需要对业务人员的业绩进行跟进,会有如下格式的跟进表 每天要进行更新表格的时候,表头都要重新手动的进行输入,比较麻烦,今天教大家的技巧是使用公式进行自动更新首...【详细内容】
2021-10-26  Excel自学成才    Tags:   点击:(41)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条