| 
				
				
				
				 | 
			
			 | 
			@@ -1,27 +1,18 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *   
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *  Licensed under the Apache License, Version 2.0 (the "License");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *  you may not use this file except in compliance with the License.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *  You may obtain a copy of the License at
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * in compliance with the License. You may obtain a copy of the License at
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *  Unless required by applicable law or agreed to in writing, software
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * See the License for the specific language governing permissions and
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * limitations under the License.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * http://www.apache.org/licenses/LICENSE-2.0
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * Unless required by applicable law or agreed to in writing, software distributed under the License
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * or implied. See the License for the specific language governing permissions and limitations under
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * the License.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			package cn.afterturn.easypoi.excel.export.base;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.text.DecimalFormat;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.Collection;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.HashMap;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.List;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.Map;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.Set;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.commons.lang3.StringUtils;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.hssf.usermodel.HSSFRichTextString;
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -37,45 +28,43 @@ import org.apache.poi.ss.util.CellRangeAddress; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.xssf.usermodel.XSSFRichTextString;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.text.DecimalFormat;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.Collection;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.HashMap;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.List;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.Map;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.Set;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.cache.ImageCache;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.excel.entity.vo.PoiBaseConstants;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.util.PoiExcelGraphDataUtil;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.util.PoiMergeCellUtil;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.util.PoiPublicUtil;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * 提供POI基础操作服务
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * @author JueYue
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *  2014年6月17日 下午6:15:13
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * @author JueYue 2014年6月17日 下午6:15:13
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@SuppressWarnings("unchecked")
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			public abstract class ExcelExportBase extends ExportBase {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    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");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    protected IExcelExportStyler       excelExportStyler;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    protected IExcelExportStyler excelExportStyler;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 创建 最主要的 Cells
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param patriarch
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param index
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param t
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param excelParams
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param sheet
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param workbook
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param rowHeight
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @throws Exception
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public int createCells(Drawing patriarch, int index, Object t,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                           List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook,
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -94,7 +83,7 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (list != null && list.size() > 0) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    for (Object obj : list) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        createListCells(patriarch, index + listC, cellNum, obj, entity.getList(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            sheet, workbook);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                sheet, workbook);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        listC++;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -103,31 +92,31 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    maxHeight = list.size();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            	Object	value = getCellValue(entity, t);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                Object value = getCellValue(entity, t);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (entity.getType() == BaseEntityTypeConstants.StringType) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    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));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                .setHyperlink(dataHanlder.getHyperlink(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                        row.getSheet().getWorkbook().getCreationHelper(), t,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                        entity.getName(), value));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                } else if (entity.getType() == BaseEntityTypeConstants.DoubleType) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    createDoubleCell(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));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                .setHyperlink(dataHanlder.getHyperlink(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                        row.getSheet().getWorkbook().getCreationHelper(), t,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                        entity.getName(), value));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    createImageCell(patriarch, entity, row, cellNum++,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        value == null ? "" : value.toString(), t);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            value == null ? "" : value.toString(), t);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -143,7 +132,7 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    sheet.getRow(i).getCell(cellNum).setCellStyle(getStyles(false, entity));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                sheet.addMergedRegion(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    new CellRangeAddress(index, index + maxHeight - 1, cellNum, cellNum));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        new CellRangeAddress(index, index + maxHeight - 1, cellNum, cellNum));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                cellNum++;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -153,50 +142,52 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 图片类型的Cell
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param patriarch
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param row
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param i
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param imagePath
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param obj
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @throws Exception
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void createImageCell(Drawing patriarch, ExcelExportEntity entity, Row row, int i,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                String imagePath, Object obj) throws Exception {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        row.setHeight((short) (50 * entity.getHeight()));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        row.createCell(i);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Cell cell = row.createCell(i);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        byte[] value = null;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (entity.getExportImageType() != 1) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            value = (byte[]) (entity.getMethods() != null
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    ? getFieldBySomeMethod(entity.getMethods(), obj)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    : entity.getMethod().invoke(obj, new Object[]{}));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        createImageCell(cell, 50 * entity.getHeight(), entity.getExportImageType() == 1 ? imagePath : null, value);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 图片类型的Cell
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void createImageCell(Cell cell, double height,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                String imagePath, byte[] data) throws Exception {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (height > cell.getRow().getHeight()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            cell.getRow().setHeight((short) height);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ClientAnchor anchor;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (type.equals(ExcelType.HSSF)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            anchor = new HSSFClientAnchor(0, 0, 0, 0, (short) i, row.getRowNum(), (short) (i + 1),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                row.getRowNum() + 1);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            anchor = new HSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    cell.getRow().getRowNum() + 1);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) i, row.getRowNum(), (short) (i + 1),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                row.getRowNum() + 1);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    cell.getRow().getRowNum() + 1);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        byte[] value = null;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (entity.getExportImageType() == 1) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (StringUtils.isNotEmpty(imagePath)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                value = ImageCache.getImage(imagePath);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            value = (byte[]) (entity.getMethods() != null
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ? getFieldBySomeMethod(entity.getMethods(), obj)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                : entity.getMethod().invoke(obj, new Object[] {}));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (StringUtils.isNotEmpty(imagePath)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            data = ImageCache.getImage(imagePath);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (value != null) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            patriarch.createPicture(anchor,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                row.getSheet().getWorkbook().addPicture(value, getImageType(value)));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (data != null) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            PoiExcelGraphDataUtil.getDrawingPatriarch(cell.getSheet()).createPicture(anchor,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    cell.getSheet().getWorkbook().addPicture(data, getImageType(data)));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private int createIndexCell(Row row, int index, ExcelExportEntity excelExportEntity) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (excelExportEntity.getName()!=null&&excelExportEntity.getName().equals("序号") && excelExportEntity.getFormat() != null
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            && excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (excelExportEntity.getName() != null && excelExportEntity.getName().equals("序号") && excelExportEntity.getFormat() != null
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                && excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            createStringCell(row, 0, currentIndex + "",
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                index % 2 == 0 ? getStyles(false, null) : getStyles(true, null), null);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    index % 2 == 0 ? getStyles(false, null) : getStyles(true, null), null);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            currentIndex = currentIndex + 1;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return 1;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -205,14 +196,6 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 创建List之后的各个Cells
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param patriarch
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param index
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param cellNum
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param obj
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param excelParams
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param sheet
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param workbook
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @throws Exception
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void createListCells(Drawing patriarch, int index, int cellNum, Object obj,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                List<ExcelExportEntity> excelParams, Sheet sheet,
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -230,38 +213,32 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            Object value = getCellValue(entity, obj);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (entity.getType() == BaseEntityTypeConstants.StringType) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                createStringCell(row, cellNum++, value == null ? "" : value.toString(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    row.getRowNum() % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    entity);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        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));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            .setHyperlink(dataHanlder.getHyperlink(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                    row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                    value));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } else if (entity.getType() == BaseEntityTypeConstants.DoubleType) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                createDoubleCell(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(), obj, entity.getName(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            value));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            .setHyperlink(dataHanlder.getHyperlink(
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                    row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                    value));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                createImageCell(patriarch, entity, row, cellNum++,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    value == null ? "" : value.toString(), obj);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        value == null ? "" : value.toString(), obj);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 创建文本类型的Cell
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param row
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param index
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param text
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param style
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void createStringCell(Row row, int index, String text, CellStyle style,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                 ExcelExportEntity entity) {
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -286,12 +263,6 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 创建数字类型的Cell
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param row
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param index
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param text
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param style
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void createDoubleCell(Row row, int index, String text, CellStyle style,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                 ExcelExportEntity entity) {
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -308,8 +279,6 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 创建统计行
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param styles 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param sheet
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void addStatisticsRow(CellStyle styles, Sheet sheet) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (statistics.size() > 0) {
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -326,9 +295,6 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 合计统计信息
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param index
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param text
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private void addStatisticsData(Integer index, String text, ExcelExportEntity entity) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (entity != null && entity.isStatistics()) {
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -346,11 +312,8 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 获取图片类型,设置图片插入类型
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param value
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @author JueYue
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *  2013年11月25日
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @author JueYue 2013年11月25日
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public int getImageType(byte[] value) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        String type = PoiPublicUtil.getFileExtendName(value);
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -359,7 +322,7 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } else if (type.equalsIgnoreCase("PNG")) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return Workbook.PICTURE_TYPE_PNG;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return Workbook.PICTURE_TYPE_JPEG;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -387,9 +350,6 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 获取样式
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param needOne
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public CellStyle getStyles(boolean needOne, ExcelExportEntity entity) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return excelExportStyler.getStyles(needOne, entity);
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -397,10 +357,6 @@ public abstract class ExcelExportBase extends ExportBase { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 合并单元格
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param sheet
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param excelParams
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param titleHeight 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void mergeCells(Sheet sheet, List<ExcelExportEntity> excelParams, int titleHeight) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Map<Integer, int[]> mergeMap = getMergeDataMap(excelParams);
 | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |