Skip to content

webinglin/excelExportor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExcelExportor

Excel导出工具项目

备注:此master版本为主要的版本,新功能的开发都将在superExcel这个分支上进行,因此,要使用或者参与开发,建议clone分支版本(superExcel)

导出工具项目概述

  1. 对于要导出的实体类,必须用JAVABEAN的形式表示.
  2. 目前不支持的属性类型为:boolean,List,Array 但是可以通过另类的做法,比如:Boolean类型的,那么就采用字符串的形式表示 (如:男/女)

导出工具类: ExcelExportor , 注解类:ExcelExport , 实体类:ExcelHeader

例子程序:ExcelExportTest

只有用 @ExcelExport 注解标记的字段才会被导出,而且导出的字段顺序和@ExcelExport注解的字段顺序一致(在JAVABEAN中声明的字段的顺序)

注解类 @ExcelExport 介绍

  • ExcelExport的colWidth用来指定每一个列的宽度,默认值15.

  • ExcelExport的header当前版本采用字符串表示,以后如果要扩展再后续版本继续相应的修改, 比如要针对不同的地区,同一个字段导出的表头名称又不一样,那么可以通过给header配置一个key,然后具体的表头名称配置到数据库,根据KEY从数据库或缓存中获取对应的header值。

  • 针对数据量太多的时候, 默认每超过 5000 条数据,就在创建一个Sheet表格

  • ExcelExport用来注解Excel表格,那么就要有一些表格的特性,该类的注解方式是从Html的table中借鉴了 colspan 和 rowspan这两个属性,然后我们在此基础上再进行扩展, 对于多表头的配置我们后面会详解,这里先混个眼熟,多表头是用逗号分割多个数值来表示的,比如: rowspan="1,2,3" 就表示 从下往上(最接近导出数据的那一行[真正要导出的数据的第一行]表头开始)数, 分别为一行,两行,三行 那么总共就有 6 行; 这样的话真正要导出的数据就会从 第7行开始写入Excel。

如何使用ExcelExportor导出excel ?

rowspan,colspn设定原则:

从最靠近数据的那一行开始往上设置,最靠近数据的那一行的colspan永远都是1,如果是多表头的情况,继续向上设置父级表头

如果父级表头已经被前面的列设置过了,那么后续遍历到的无需设置,只需要设置自身以及还未被设置到的和自己的列相交叉的父级表头

比如: 对于下面这个表格的设置 colspan 和 rowspan 要这样设置:

<数字>(colspan="" , rowspan="") 【其中数字代表第几列-也就是注解的字段位置】

1(colspan="1" , rowspan="3" , header="合并");
2(colspan="1,2,5" , rowspan="1,1,1" , header="2,13,14" );
3(colspan="1" , rowspan="1" , header="3");

4(colspan="1,3" , rowspan="1,1" , header="4,15");
5(colspan="1" , rowspan="1" , header="5");
6(colspan="1" , rowspan="1" , header="6");

7(colspan="1,6" , rowspan="2,1" , header="7,17");
8(colspan="1,5" , rowspan="1,1" , header="8,18");
9(colspan="1" , rowspan="1" , header="9");
10(colspan="1" , rowspan="1" , header="10");
11(colspan="1" , rowspan="1" , header="11");
12(colspan="1" , rowspan="1" , header="12");

-------------------------------------------------
| 合	|		14			|		17				|
-	---------------------------------------------
| 并	|	13	|	15		|   |		18			|	
-	---------------------   ---------------------
| 1	| 2	| 3	| 4	| 5	| 6	| 7	| 8	| 9 |10	|11	|12	|
-------------------------------------------------

说明:

上面的三行都是表头,那从第四行开始才是数据行。

第一列的rowspan设置为3,说明这一列的表头占据了三行。言外之意就是这次要导出的excel的表头是一个多表头 (如果只是单表头,都不用设置rowspan和colspan了,会默认采用 rowspan="1" colspan="1")

第四行开始就是数据行了,所以最靠近数据行的就是第三行,而第二列开始出现父级表头,所以,从第二列开始设置父级表头 第二列的直接父级表头是 13 再上一级的父级表头是 14

所以第二列的colspan和rowspan设置为:colspan="第2列的colspan,第13列的colspan,第14列的colspan"

同理: 因为第2列,第13列,第14列都占据一行 所以: rowspan="第2列的rowspan,第13列的rowspan,第14列的rowspan"

如果cospan和rowspan有多个值, 设置header的时候也要设置多个值

因此 计算出第2列的 设置应该是: (colspan="1,2,5" , rowspan="1,1,1" , header="2,13,14" )

第三列的设置: 第三列只占据了一列,并且第三列的父级表头都已经在设置第二列的时候进行设置了,所以第三列不需要再设置父级表头了。 因此第三列只需要设置自身即可 (colspan="1" , rowspan="1" , header="3")

第四列的设置: 第四列占据了一列,colspan为1,并且其父级表头有15,14, 但是14这个父级表头已经在设置第二列的时候被设置过了, 此处略过,只需要设置15这个父级表头即可, 而15这个父级表头占据了三列(横跨第 4,5,6 列) 所以第四列的 colspan设置为: 1,3 。 而 4 和 15都只有占据一行,因此 第四列的 rowspan为 1,1

第五列和第六列由于其父级表头15都在设置第四列的时候设置过了,所以第五列和第六列都只需要设置自身即可, 即 (rowspan="1",colspan="1")

图示说明

Excel导出工具使用图解

About

Excel导出通用接口及实现

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages