Excel多Sheet导出
目前单Sheet和单Class的方式比较多,对于多Sheet的方式还是一片空白,这里做一下说明:
导出基本采用ExportParams 这个对象,进行参数配置; 我们需要进行多Sheet导出,那么就需要定义一个基础配置对象
public class ExportView {
public ExportView(){
}
private ExportParams exportParams;
private List<?> dataList;
private Class<?> cls;
public ExportParams getExportParams() {
return exportParams;
}
public void setExportParams(ExportParams exportParams) {
this.exportParams = exportParams;
}
public Class<?> getCls() {
return cls;
}
public void setCls(Class<?> cls) {
this.cls = cls;
}
public List<?> getDataList() {
return dataList;
}
public void setDataList(List<?> dataList) {
this.dataList = dataList;
}
public ExportView(Builder builder) {
this.exportParams = builder.exportParams;
this.dataList = builder.dataList;
this.cls = builder.cls;
}
public static class Builder {
private ExportParams exportParams=null;
private List<?> dataList=null;
private Class<?> cls=null;
public Builder() {
}
public Builder exportParams(ExportParams exportParams) {
this.exportParams = exportParams;
return this;
}
public Builder dataList(List<?> dataList) {
this.dataList = dataList;
return this;
}
public Builder cls(Class<?> cls) {
this.cls = cls;
return this;
}
public ExportView create() {
return new ExportView(this);
}
}
}
对象主要有三个属性: // 该注解配置的导出属性
- ExportParams exportParams // 对应注解 class 实例对象的数据集合
- List dataList // 对应注解的 class
- Class cls
这里没有用泛型,因为多Sheet导出时,会引用到不同的注解对象;
定义基础配置的集合
public class ExportMoreView {
private List<ExportView> moreViewList=Lists.newArrayList();
public List<ExportView> getMoreViewList() {
return moreViewList;
}
public void setMoreViewList(List<ExportView> moreViewList) {
this.moreViewList = moreViewList;
}
}
最后在实现调用的方法中,对整个集合进行配置和解析
List<Map<String, Object>> exportParamList=Lists.newArrayList();
//该行主要用于获取业务数据,请根据具体的情况进行修改和调整
ExportMoreView moreView=this.getBaseTransferService().mergeExportView(templateTypeCode);
//迭代导出对象,将对应的配置信息写入到实际的配置中
for(ExportView view:moreView.getMoreViewList()){
Map<String, Object> valueMap=Maps.newHashMap();
valueMap.put(NormalExcelConstants.PARAMS,view.getExportParams());
valueMap.put(NormalExcelConstants.DATA_LIST,view.getDataList());
valueMap.put(NormalExcelConstants.CLASS,view.getCls());
exportParamList.add(valueMap);
}
//实现导出配置
modelMap.put(NormalExcelConstants.FILE_NAME,new DateTime().toString("yyyyMMddHHmmss"));
//将转换完成的配置接入到导出中
modelMap.put(NormalExcelConstants.MAP_LIST,exportParamList);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
如果不是采用的MVC的方式,请将转换的配置采用以下的方式实现:
参见ExcelExportUtil