Java导出excel

1.之前项目需求导出简单的excel表格,网上找到了一个叫xxl-excel的工具。

xxl-excel底层用了poi和反射实现的。

xxl-excel能满足一些简单的excel导入导出,不支持复杂的excel导入导出。如果要操作复杂的表格,还是直接操作poi吧。

地址:http://www.xuxueli.com/xxl-excel/#/

2.使用准备

2.1.依赖包引入:

i.可以自己打jar包;

下载下来源码,在项目目录下面运行mvn package命令;在./target目录下会生成

‘xxl-excel-1.1.0-SNAPSHOT.jar’包,加入到要使用的工程中

ii.使用maven公共仓库引入依赖


Java导出excel_第1张图片

2.2.依赖的依赖POI

本工具包依赖于POI_3.17,要使用的话需要在自己的工程中添加POI_3.17的依赖;使用maven管理如下:


Java导出excel_第2张图片

3.导出Test

3.1.对应excel的简单对象

(省略setter和getter方法)


Java导出excel_第3张图片

注解解释:

i.@ExcelSheet : 工作簿的名称,用于类上

属性:

name : 可以从指定名称的工作簿中导入数据;或者指定导出的工作簿名称

headColor : 首行(标题行)的颜色

ii.@ExcelField :字段对应Excel表的列名,用于属性上

属性:

name : 指定对应关系

dateformat :指定时间的格式,默认是“yyyy-MM-dd HH:mm:ss”

width :设置单元格宽度

3.2.对象列表导出到Excel


Java导出excel_第4张图片

!.方法介绍:

void exportToFile(String filePath, List... dataList){...}

第二个参数是可以变的参数,意思是可以同时传入多个对象的列表,在一个Excel表中   生成多个sheet来导出不同的数据。

3.3.导出结果


Java导出excel_第5张图片

4.导入Test

4.1.和导出一样先定义对应excel的简单对象

(省略setter和getter方法)


Java导出excel_第6张图片

4.2.导入的几种方式(方法)

4.2.1.文件路径


Java导出excel_第7张图片

控制台打印:


4.2.2.传入文件,转换成输入流


Java导出excel_第8张图片

测试工具打印:


Java导出excel_第9张图片

4.3.导入方法介绍

i.List importExcel(Class sheetClass, File excelFile){...}

入参是pojo类和文件;

ii.List importExcel(Class sheetClass, String filePath){...}

入参是pojo类和文件路径

iii.List importExcel(Class sheetClass, InputStream inputStream){...}

入参是破击类和输入流

ps:根据使用场景选择不同的导入方法

5.遇到的坑

i.当java对象的字段属性是数字类型时,需要对excel表中的字段做分列处理,否则会报错

java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell

解决办法:

a.选定该列数据

b.点菜单“数据”—“分列”

c.点两次“下一步”

d.在“列数据格式”中选择“文本”—“完成”

完成后在单元格右上角会有一个绿色的标志


ii.pojo对象的属性最好都定义成基本数据类型的封装类型,这样的话数据库单元格为空就不会报错。

例子:

针对Excel数据进行导入操作:


a.正例:


Java导出excel_第10张图片

正常输出对应的字段为null:


b.反例:


Java导出excel_第11张图片

会报错:

java.lang.IllegalArgumentException: Can not set int field com.ywgroup.iecloud.assetmanagement.testExcel.Dog.age to null value

你可能感兴趣的:(Java导出excel)