Excel生成-ExcelWriter
由来
Excel有读取也便有写出,Hutool针对将数据写出到Excel做了封装。
原理
Hutool将Excel写出封装为ExcelWriter,原理为包装了Workbook对象,每次调用merge(合并单元格)或者write(写出数据)方法后只是将数据写入到Workbook,并不写出文件,只有调用flush或者close方法后才会真正写出文件。
由于机制原因,在写出结束后需要关闭ExcelWriter对象,调用close方法即可关闭,此时才会释放Workbook对象资源,否则带有数据的Workbook一直会常驻内存。
使用例子
1. 将行列对象写出到Excel
我们先定义一个嵌套的List,List的元素也是一个List,内层的一个List代表一行数据,每行都有4个单元格,最终list对象代表多行数据。
Listrow1=CollUtil.newArrayList("aa","bb","cc","dd");
Listrow2=CollUtil.newArrayList("aa1","bb1","cc1","dd1");
Listrow3=CollUtil.newArrayList("aa2","bb2","cc2","dd2");
Listrow4=CollUtil.newArrayList("aa3","bb3","cc3","dd3");
Listrow5=CollUtil.newArrayList("aa4","bb4","cc4","dd4");
List>rows=CollUtil.newArrayList(row1,row2,row3,row4,row5);
然后我们创建ExcelWriter对象后写出数据:
//通过工具类创建writer
ExcelWriterwriter=ExcelUtil.getWriter("d:/writeTest.xlsx");
//通过构造方法创建writer
//ExcelWriter writer = new ExcelWriter("d:/writeTest.xls");
//跳过当前行,既第一行,非必须,在此演示用
writer.passCurrentRow();
//合并单元格后的标题行,使用默认标题样式
writer.merge(list1.size()-1,"测试标题");
//一次性写出内容,强制输出标题
writer.write(rows,true);
//关闭writer,释放内存
writer.clos