|
@@ -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;
|