|  | @@ -1,24 +1,57 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.util.excel;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import com.ym.mec.util.exception.UtilException;
 | 
	
		
			
				|  |  | +import java.io.File;
 | 
	
		
			
				|  |  | +import java.io.FileInputStream;
 | 
	
		
			
				|  |  | +import java.io.IOException;
 | 
	
		
			
				|  |  | +import java.io.InputStream;
 | 
	
		
			
				|  |  | +import java.lang.reflect.InvocationTargetException;
 | 
	
		
			
				|  |  | +import java.lang.reflect.Method;
 | 
	
		
			
				|  |  | +import java.text.SimpleDateFormat;
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +import java.util.Iterator;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +import java.util.Map.Entry;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  import org.apache.commons.beanutils.NestedNullException;
 | 
	
		
			
				|  |  |  import org.apache.commons.beanutils.PropertyUtils;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.apache.poi.POIXMLDocumentPart;
 | 
	
		
			
				|  |  | -import org.apache.poi.hssf.usermodel.*;
 | 
	
		
			
				|  |  | -import org.apache.poi.ss.usermodel.*;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFCell;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFCellStyle;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFFont;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFPicture;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFRow;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFShape;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFSheet;
 | 
	
		
			
				|  |  | +import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.Cell;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.CellStyle;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.Font;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.IndexedColors;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.PictureData;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.Row;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.Sheet;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.Workbook;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.usermodel.WorkbookFactory;
 | 
	
		
			
				|  |  |  import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 | 
	
		
			
				|  |  | -import org.apache.poi.xssf.usermodel.*;
 | 
	
		
			
				|  |  | +import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
 | 
	
		
			
				|  |  | +import org.apache.poi.xssf.usermodel.XSSFDrawing;
 | 
	
		
			
				|  |  | +import org.apache.poi.xssf.usermodel.XSSFPicture;
 | 
	
		
			
				|  |  | +import org.apache.poi.xssf.usermodel.XSSFShape;
 | 
	
		
			
				|  |  | +import org.apache.poi.xssf.usermodel.XSSFSheet;
 | 
	
		
			
				|  |  | +import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 | 
	
		
			
				|  |  |  import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | +import org.springframework.expression.ExpressionParser;
 | 
	
		
			
				|  |  | +import org.springframework.expression.spel.standard.SpelExpressionParser;
 | 
	
		
			
				|  |  | +import org.springframework.expression.spel.support.StandardEvaluationContext;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import java.io.*;
 | 
	
		
			
				|  |  | -import java.lang.reflect.InvocationTargetException;
 | 
	
		
			
				|  |  | -import java.lang.reflect.Method;
 | 
	
		
			
				|  |  | -import java.text.SimpleDateFormat;
 | 
	
		
			
				|  |  | -import java.util.*;
 | 
	
		
			
				|  |  | -import java.util.Map.Entry;
 | 
	
		
			
				|  |  | +import com.ym.mec.util.exception.UtilException;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  public class POIUtil {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -28,7 +61,9 @@ public class POIUtil {
 | 
	
		
			
				|  |  |  	private final static int MAX_DATA_SIZE = 50000;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	private static ExpressionParser expressionParser =new SpelExpressionParser();
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  |  	/**
 | 
	
		
			
				|  |  |  	 * 将数据集dataset导出到fileName文件中(只支持.xlsx格式)
 | 
	
		
			
				|  |  |  	 *
 | 
	
	
		
			
				|  | @@ -201,17 +236,22 @@ public class POIUtil {
 | 
	
		
			
				|  |  |  		// 添加数据
 | 
	
		
			
				|  |  |  		T data = null;
 | 
	
		
			
				|  |  |  		Object obj = null;
 | 
	
		
			
				|  |  | +		StandardEvaluationContext context = null;
 | 
	
		
			
				|  |  |  		for (int i = 1; i <= dataset.size(); i++) {
 | 
	
		
			
				|  |  |  			data = dataset.get(i - 1);
 | 
	
		
			
				|  |  |  			if (data != null) {
 | 
	
		
			
				|  |  | +				
 | 
	
		
			
				|  |  | +				context = new StandardEvaluationContext(data);
 | 
	
		
			
				|  |  |  				row = sheet.createRow(i);
 | 
	
		
			
				|  |  |  				for (int j = 0; j < fieldColumns.length; j++) {
 | 
	
		
			
				|  |  |  					cell = row.createCell(j);
 | 
	
		
			
				|  |  |  					try {
 | 
	
		
			
				|  |  | -						obj = PropertyUtils.getNestedProperty(data, fieldColumns[j]);
 | 
	
		
			
				|  |  | +						//obj = PropertyUtils.getNestedProperty(data, fieldColumns[j]);
 | 
	
		
			
				|  |  | +						obj = expressionParser.parseExpression(fieldColumns[j]).getValue(context);
 | 
	
		
			
				|  |  |  						if (obj instanceof Date) {
 | 
	
		
			
				|  |  |  							obj = sdf.format(obj);
 | 
	
		
			
				|  |  |  						}
 | 
	
		
			
				|  |  | +						
 | 
	
		
			
				|  |  |  					} catch (NestedNullException e) {
 | 
	
		
			
				|  |  |  						LOGGER.warn(e.getMessage());
 | 
	
		
			
				|  |  |  						obj = null;
 |