| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -20,7 +20,6 @@ import java.io.ByteArrayOutputStream; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.io.File;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.io.IOException;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.text.DecimalFormat;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.ArrayList;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.Collection;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.HashMap;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.List;
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -45,7 +44,6 @@ import org.apache.poi.xssf.usermodel.XSSFClientAnchor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.xssf.usermodel.XSSFRichTextString;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.jeecgframework.poi.excel.entity.params.MergeEntity;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.jeecgframework.poi.util.PoiMergeCellUtil;
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -61,18 +59,17 @@ import org.slf4j.LoggerFactory; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			public abstract class ExcelExportBase extends ExportBase {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static final Logger        LOGGER        = LoggerFactory
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                                         .getLogger(ExcelExportBase.class);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static final Logger LOGGER = LoggerFactory.getLogger(ExcelExportBase.class);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private int                        currentIndex  = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private int currentIndex = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    protected ExcelType                type          = ExcelType.HSSF;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    protected ExcelType type = ExcelType.HSSF;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private Map<Integer, Double>       statistics    = new HashMap<Integer, Double>();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private Map<Integer, Double> statistics = new HashMap<Integer, Double>();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private IExcelExportStyler         excelExportStyler;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private IExcelExportStyler excelExportStyler;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 创建 最主要的 Cells
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -96,8 +93,8 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                Collection<?> list = getListCellValue(entity, t);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                int listC = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                for (Object obj : list) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    createListCells(patriarch, index + listC, cellNum, obj, entity.getList(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        sheet, workbook);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    createListCells(patriarch, index + listC, cellNum, obj, entity.getList(), sheet,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        workbook);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    listC++;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                cellNum += entity.getList().size();
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -108,7 +105,14 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                Object value = getCellValue(entity, t);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (entity.getType() == 1) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    createStringCell(row, cellNum++, value == null ? "" : value.toString(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), entity);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        entity);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    if (entity.isHyperlink()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        row.getCell(cellNum - 1)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            .setHyperlink(dataHanlder.getHyperlink(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                row.getSheet().getWorkbook().getCreationHelper(), t,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                entity.getName(), value));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    createImageCell(patriarch, entity, row, cellNum++,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        value == null ? "" : value.toString(), t);
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -126,8 +130,8 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    sheet.getRow(i).createCell(cellNum);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    sheet.getRow(i).getCell(cellNum).setCellStyle(getStyles(false, entity));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                sheet.addMergedRegion(new CellRangeAddress(index, index + maxHeight - 1, cellNum,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    cellNum));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                sheet.addMergedRegion(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    new CellRangeAddress(index, index + maxHeight - 1, cellNum, cellNum));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                cellNum++;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -180,8 +184,9 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                LOGGER.error(e.getMessage(), e);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            byte[] value = (byte[]) (entity.getMethods() != null ? getFieldBySomeMethod(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                entity.getMethods(), obj) : entity.getMethod().invoke(obj, new Object[] {}));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            byte[] value = (byte[]) (entity.getMethods() != null
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ? getFieldBySomeMethod(entity.getMethods(), obj)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                : entity.getMethod().invoke(obj, new Object[] {}));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (value != null) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                patriarch.createPicture(anchor,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    row.getSheet().getWorkbook().addPicture(value, getImageType(value)));
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -193,8 +198,8 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private int createIndexCell(Row row, int index, ExcelExportEntity excelExportEntity) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (excelExportEntity.getName().equals("序号")
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            && excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            createStringCell(row, 0, currentIndex + "", index % 2 == 0 ? getStyles(false, null)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                : getStyles(true, null), null);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            createStringCell(row, 0, currentIndex + "",
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                index % 2 == 0 ? getStyles(false, null) : getStyles(true, null), null);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            currentIndex = currentIndex + 1;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return 1;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -207,8 +212,8 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param styles
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void createListCells(Drawing patriarch, int index, int cellNum, Object obj,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                                                                                    throws Exception {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                List<ExcelExportEntity> excelParams, Sheet sheet,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                Workbook workbook) throws Exception {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ExcelExportEntity entity;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Row row;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (sheet.getRow(index) == null) {
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -224,6 +229,12 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                createStringCell(row, cellNum++, value == null ? "" : value.toString(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    row.getRowNum() % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    entity);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (entity.isHyperlink()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    row.getCell(cellNum - 1)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        .setHyperlink(dataHanlder.getHyperlink(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            value));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                createImageCell(patriarch, entity, row, cellNum++,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    value == null ? "" : value.toString(), obj);
 | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |