这个工具包主要是对EasyExcel的封装,是1.9.6版本新增
多图转换器
我们实现了一个ListUrlImageConvegter
用于多图转换,目前是将多个图片并列为一排
注意,如果图片字段是在中间,需要自行重写header和数据,否则会出现覆盖的情况
方法名 | 功能 |
---|---|
convegtToInputStream | 将图片URL转换为输入流 |
convegtValueToExcelData | 返回一个ImageData列表(可以取出后通过ImageData::getImage来通过Byte直接输出到excel) |
ExcelUtils
工具包内主要是convegt
方法
有两个返回值
返回值为void的方法需要传入一个OutputStream
,将结果直接输出到输出流中
返回值为ByteArrayOutputStream
的方法为将结果以ByteArrayOutputStream
的形式返回
下面对各个参数进行说明:
类型 | 参数名 | 参数作用 |
---|---|---|
List<String> | heads | 一个String对象的列表,用于存放标题 |
class | clazz | 导出类型的源类,用于确定header |
List | data | 需要导出的数据 |
String | sheetName | 放入的sheet的名称 |
List<List<String>> | changeColList | 需要调整的列(和行合并进行搭配使用) |
List<List<String>> | changeRowList | 需要调整的行(和列合并进行搭配使用) |
List<HashMap<Integer, Integer>> | mergeRowMapList | 需要合并的行 |
List<HashMap<Integer, Integer>> | mergeColMapList | 需要合并的列 |
其中对于调整列对象,我们有专门的表达式起始行/列:截止行/列
如果中间有隔断,比如这样的单元格
我们要合并的是行,需要调整的是列,具体的代码可以这样做
List<String> changeCols = new ArrayList();
changeCols.add("0:2");
changeCols.add("6:8");
HashMap<Integer,Integer> mergeRows = new HashMap();
for(int i=1;i<=30;i+=2){
mergeRows.put(i,i+1);
}
List<List<String>> changeColList = new ArrayList();
List<HashMap<Integer,Integer>> mergeRowList = new ArrayList();
changeColList.add(changeCols);
mergeRowLis.add(mergeRows);
外层我们用list来封装一下主要原因是我们可能会遇到一些奇怪的合并方案,比如这种
我们有不同的合并方式,所以我们可以放在list里面,用list的下标来对每一对change和merge进行归类