JXLS基础用法

简介

JXLS是基于POI开发的一个Excel工具包,相比POI提供了更加简单的方法。只需要在Excel模板中定义所有报表格式和数据布局,然后运行Jxls引擎,为其提供填充模板的数据即可。

依赖

本文主要简单说明 JXLS 1.0.6 版本的基本使用方法。
1.0.6为JXLS1.x的最后一个版本,后续升级2.x之后API变化较大,可以则需使用。

1
2
3
4
5
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.6</version>
</dependency>

模板

JXLS导出Excel需要提前定义好一个模板,下图是一个简单的示例。提供了一个forEach的操作,遍历一个名为personList的列表对象。
在定义这个模板时,在Excel中同时设置了生日一栏为日期格式,这样我们导出数据时需要要在Java代码中进行时间转换,Excel会帮我们自动做好。
姓名那个单元格设置了红色字体,那么最后遍历出来的姓名将全是红色字体!
模板

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//假设使用这些数据的List,实际操作应从数据库中读取
public List<Person> getData(){
List<Person> personList = new LinkedList<>();
personList.add(new Person(1L,"张三","张三","男",10,"10"));
personList.add(new Person(2L,"李四","张三","男",10,""));
personList.add(new Person(3L,"张三","张三","男",10,""));
personList.add(new Person(4L,"张三","张三","男",10,""));
personList.add(new Person(5L,"张三","张三","男",10,""));
personList.add(new Person(6L,"李四","张三","男",10,""));
personList.add(new Person(7L,"张三","张三","男",10,""));
personList.add(new Person(8L,"张三","张三","男",10,""));
personList.add(new Person(9L,"李四","张三","男",10,""));
personList.add(new Person(10L,"张三","张三","男",10,""));
personList.add(new Person(11L,"李四","张三","男",10,""));
personList.add(new Person(12L,"李四","张三","男",10,""));
return personList;
}
//构造Excel文件
public File buildExcel() throws Exception {
//读取模版,此处写自己的模板文件位置
File templateFile = new File("E://template.xlsx");

//获取数据
Map<String,Object> data= new HashMap<>();
//此处Map的Key就对应模板中遍历的对象名
data.put("personList",getData());

//转换数据
XLSTransformer transformer = new XLSTransformer();
Workbook workbook = transformer.transformXLS(new BufferedInputStream(new FileInputStream(templateFile)), data);

// 生成的目标文件
File file = new File("E://生成的Excel.xlsx");

//写入数据
OutputStream outputStream = new FileOutputStream(file);
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
return file;
}

运行以上方法就可以得到一个Excel文档了,如下图:
生成的表格

JXLS是支持多Sheet输出的,在我们构造要写入的数据时使用的是map类型,如果我们继续在Map中添加数据,并且在模板中有对应的sheet,那么它是可以同时导出的。

好了以上就是jxls的基础用法了!

在操作单元格的时候,使用POI相对比较简单,比如常用的合并单元格、添加链接、插入图片等实用的功能,我为此写了一个工具类,放在了我的GitHub上,大家可以下载参考