Excel之XLSTransformer

Avatar
admin

前言

利用该工具类可以向excel模板中写入数据,而不用写过多代码画excel

引入依赖

java

net.sf.jxls

jxls-core

1.0.3

单Sheet页导出

创建如下excel模板,通过文件输入流读取excel模板,利用XLSTransformer类将数据写入模板,并将得到的新excel下载到本地,代码如下:

```java

public static void main(String[] args) throws InvalidFormatException, IOException {

// 循环数据

List list = new ArrayList<>();

for (int i = 0; i < 100; i++) {

Map data = new HashMap<>();

data.put("a1", (int) (Math.random() * 100));

data.put("a2", (int) (Math.random() * 100));

data.put("a3", (int) (Math.random() * 100));

data.put("a4", (int) (Math.random() * 100));

data.put("a5", (int) (Math.random() * 100));

list.add(data);

}

// 表格使用的数据

Map map = new HashMap<>();

map.put("data", list);

map.put("title", "java基于模板导出excel表格");

map.put("val", "演示合并单元格的数据显示");

InputStream is = new FileInputStream("C:\\1111.xlsx");

XLSTransformer xlsTransformer = new XLSTransformer();

// 获取Workbook, 传入模板和数据

Workbook workbook = xlsTransformer.transformXLS(is, map);

OutputStream os = new BufferedOutputStream(new FileOutputStream("C:\\2222.xlsx"));

workbook.write(os);

is.close();

os.flush();

os.close();

}

```

多sheet页导出

```java

public class TransformXLS {

public static void main(String[] args) throws InvalidFormatException, IOException {

FileInputStream is = new FileInputStream("C:\Users\1111.xlsx");

// data中每一个list对应一个sheet页

List>> data = getList();

List sheetNames = new ArrayList();

sheetNames.add("湘潭市");

sheetNames.add("河南省");

XLSTransformer transformer = new XLSTransformer();

Workbook workbook = transformer.transformMultipleSheetsList(

is, // 输入流

data, // 要写入的数据

sheetNames, // sheet页名字

"result", // 对应excel中标签的名字

new HashMap<>(),

0);

FileOutputStream os = new FileOutputStream("C:\\Users\\2222.xlsx");

workbook.write(os);

os.flush();

os.close();

is.close();

}

}

```

模拟要写入模板的数据

```java

public static List>> getList() {

//每一个list代表一个sheet页的数据

List>> list = new ArrayList<>();

//这里我们用map为例,这个是用什么都可以的。

List> list1 = new ArrayList>();

Map map1 = new HashMap();

map1.put("cityName", "湘潭市");

map1.put("countyName", "湘潭县");

map1.put("townName", "中路铺镇");

Map map2 = new HashMap();

map2.put("cityName", "湘潭市");

map2.put("countyName", "雨湖区");

map2.put("townName", "基建营");

list1.add(map1);

list1.add(map2);

List> list2 = new ArrayList>();

Map map3 = new HashMap();

map3.put("rownums", 1);

map3.put("cityName", "河南省");

map3.put("countyName", "安阳市");

map3.put("townName", "林州市");

Map map4 = new HashMap();

map4.put("rownums", 2);

map4.put("cityName", "河南省");

map4.put("countyName", "安阳市");

map4.put("townName", "汤阴县");

list2.add(map3);

list2.add(map4);

list.add(list1);

list.add(list2);

return list;

}

```