重写cn.afterturn.easypoi.excel.export.template.ExcelExportOfTemplateUtil
添加 createImageCell 方法 此方法保证在不设置宽高的情况下 图片会占满合并后的单元格
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package cn.afterturn.easypoi.excel.export.template;
import cn.afterturn.easypoi.cache.ExcelCache;
import cn.afterturn.easypoi.cache.ImageCache;
import cn.afterturn.easypoi.entity.ImageEntity;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.params.ExcelForEachParams;
import cn.afterturn.easypoi.excel.export.base.ExcelExportBase;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
import cn.afterturn.easypoi.excel.export.template.TemplateSumHanlder.TemplateSumEntity;
import cn.afterturn.easypoi.excel.html.helper.MergedRegionHelper;
import cn.afterturn.easypoi.exception.excel.ExcelExportException;
import cn.afterturn.easypoi.exception.excel.enums.ExcelExportEnum;
import cn.afterturn.easypoi.util.PoiElUtil;
import cn.afterturn.easypoi.util.PoiExcelGraphDataUtil;
import cn.afterturn.easypoi.util.PoiPublicUtil;
import cn.afterturn.easypoi.util.PoiSheetUtility;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
import java.util.*;
public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelExportOfTemplateUtil.class);
private Set<String> tempCreateCellSet = new HashSet();
private TemplateExportParams teplateParams;
private MergedRegionHelper mergedRegionHelper;
private TemplateSumHanlder templateSumHanlder;
public ExcelExportOfTemplateUtil() {
}
private void addDataToSheet(Class<?> pojoClass, Collection<?> dataSet, Sheet sheet, Workbook workbook) throws Exception {
if(workbook instanceof XSSFWorkbook) {
super.type = ExcelType.XSSF;
}
Map titlemap = this.getTitleMap(sheet);
Drawing patriarch = PoiExcelGraphDataUtil.getDrawingPatriarch(sheet);
Field[] fileds = PoiPublicUtil.getClassFields(pojoClass);
ExcelTarget etarget = (ExcelTarget)pojoClass.getAnnotation(ExcelTarget.class);
String targetId = null;
if(etarget != null) {
targetId = etarget.value();
}
ArrayList excelParams = new ArrayList();
this.getAllExcelField((String[])null, targetId, fileds, excelParams, pojoClass, (List)null);
this.sortAndFilterExportField(excelParams, titlemap);
short rowHeight = this.getRowHeight(excelParams);
int index = this.teplateParams.getHeadingRows() + this.teplateParams.getHeadingStartRow();
sheet.shiftRows(this.teplateParams.getHeadingRows() + this.teplateParams.getHeadingStartRow(), sheet.getLastRowNum(), this.getShiftRows(dataSet, excelParams), true, true);
if(excelParams.size() != 0) {
Object t;
for(Iterator its = dataSet.iterator(); its.hasNext(); index += this.createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight)) {
t = its.next();
}
this.mergeCells(sheet, excelParams, index);
}
}
private int getShiftRows(Collection<?> dataSet, List<ExcelExportEntity> excelParams) throws Exception {
int size = 0;
Object t;
for(Iterator its = dataSet.iterator(); its.hasNext(); size += this.getOneObjectSize(t, excelParams)) {
t = its.next();
}
return size;
}
public int getOneObjectSize(Object t, List<ExcelExportEntity> excelParams) throws Exception {
int maxHeight = 1;
int k = 0;
for(int paramSize = excelParams.size(); k < paramSize; ++k) {
ExcelExportEntity entity = (ExcelExportEntity)excelParams.get(k);
if(entity.getList() != null) {
Collection list = (Collection)entity.getMethod().invoke(t, new Object[0]);
if(list != null && list.size() > maxHeight) {
maxHeight = list.size();
}
}
}
return maxHeight;
}
public Workbook createExcleByTemplate(TemplateExportParams params, Class<?> pojoClass, Collection<?> dataSet, Map<String, Object> map) {
if(params != null && map != null && !StringUtils.isEmpty(params.getTemplateUrl())) {
Workbook wb = null;
try {
this.teplateParams = params;
wb = this.getCloneWorkBook();
this.setExcelExportStyler((IExcelExportStyler)this.teplateParams.getStyle().getConstructor(new Class[]{Workbook.class}).newInstance(new Object[]{wb}));
int e = 0;
for(int le = params.isScanAllsheet()?wb.getNumberOfSheets():params.getSheetNum().length; e < le; ++e) {
if(params.getSheetName() != null && params.getSheetName().length > e && StringUtils.isNotEmpty(params.getSheetName()[e])) {
wb.setSheetName(e, params.getSheetName()[e]);
}
this.tempCreateCellSet.clear();
this.parseTemplate(wb.getSheetAt(e), map, params.isColForEach());
}
if(dataSet != null) {
this.dataHanlder = params.getDataHanlder();
if(this.dataHanlder != null) {
this.needHanlderList = Arrays.asList(this.dataHanlder.getNeedHandlerFields());
}
this.addDataToSheet(pojoClass, dataSet, wb.getSheetAt(params.getData