@@ -5,7 +5,7 @@ import java.io.FileInputStream; | |||||
import java.io.FileNotFoundException; | import java.io.FileNotFoundException; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
@@ -23,8 +23,13 @@ class FileLoade { | |||||
FileInputStream fileis = null; | FileInputStream fileis = null; | ||||
ByteArrayOutputStream baos = null; | ByteArrayOutputStream baos = null; | ||||
try { | try { | ||||
String path = POIPublicUtil.getWebRootPath(url); | |||||
fileis = new FileInputStream(path); | |||||
//先用绝对路径查询,再查询相对路径 | |||||
try { | |||||
fileis = new FileInputStream(url); | |||||
} catch (FileNotFoundException e) { | |||||
String path = PoiPublicUtil.getWebRootPath(url); | |||||
fileis = new FileInputStream(path); | |||||
} | |||||
baos = new ByteArrayOutputStream(); | baos = new ByteArrayOutputStream(); | ||||
byte[] buffer = new byte[1024]; | byte[] buffer = new byte[1024]; | ||||
int len; | int len; | ||||
@@ -34,9 +39,9 @@ class FileLoade { | |||||
baos.flush(); | baos.flush(); | ||||
return baos.toByteArray(); | return baos.toByteArray(); | ||||
} catch (FileNotFoundException e) { | } catch (FileNotFoundException e) { | ||||
LOGGER.error(e.getMessage(),e); | |||||
LOGGER.error(e.getMessage(), e); | |||||
} catch (IOException e) { | } catch (IOException e) { | ||||
LOGGER.error(e.getMessage(),e); | |||||
LOGGER.error(e.getMessage(), e); | |||||
} finally { | } finally { | ||||
try { | try { | ||||
if (fileis != null) | if (fileis != null) | ||||
@@ -44,7 +49,7 @@ class FileLoade { | |||||
if (fileis != null) | if (fileis != null) | ||||
baos.close(); | baos.close(); | ||||
} catch (IOException e) { | } catch (IOException e) { | ||||
LOGGER.error(e.getMessage(),e); | |||||
LOGGER.error(e.getMessage(), e); | |||||
} | } | ||||
} | } | ||||
LOGGER.error(fileis + "这个路径文件没有找到,请查询"); | LOGGER.error(fileis + "这个路径文件没有找到,请查询"); | ||||
@@ -24,6 +24,9 @@ import org.jeecgframework.poi.excel.export.template.ExcelExportOfTemplateUtil; | |||||
*/ | */ | ||||
public final class ExcelExportUtil { | public final class ExcelExportUtil { | ||||
private ExcelExportUtil() { | |||||
} | |||||
/** | /** | ||||
* @param entity | * @param entity | ||||
* 表格标题属性 | * 表格标题属性 | ||||
@@ -23,7 +23,10 @@ import org.slf4j.LoggerFactory; | |||||
* @version 1.0 | * @version 1.0 | ||||
*/ | */ | ||||
@SuppressWarnings({ "unchecked" }) | @SuppressWarnings({ "unchecked" }) | ||||
public class ExcelImportUtil { | |||||
public final class ExcelImportUtil { | |||||
private ExcelImportUtil() { | |||||
} | |||||
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelImportUtil.class); | private static final Logger LOGGER = LoggerFactory.getLogger(ExcelImportUtil.class); | ||||
@@ -23,7 +23,7 @@ import org.jeecgframework.poi.excel.export.base.ExcelExportBase; | |||||
import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler; | import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler; | ||||
import org.jeecgframework.poi.exception.excel.ExcelExportException; | import org.jeecgframework.poi.exception.excel.ExcelExportException; | ||||
import org.jeecgframework.poi.exception.excel.enums.ExcelExportEnum; | import org.jeecgframework.poi.exception.excel.enums.ExcelExportEnum; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
@@ -120,7 +120,7 @@ public class ExcelExportServer extends ExcelExportBase { | |||||
excelParams.add(indexExcelEntity(entity)); | excelParams.add(indexExcelEntity(entity)); | ||||
} | } | ||||
// 得到所有字段 | // 得到所有字段 | ||||
Field fileds[] = POIPublicUtil.getClassFields(pojoClass); | |||||
Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); | |||||
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | ||||
String targetId = etarget == null ? null : etarget.value(); | String targetId = etarget == null ? null : etarget.value(); | ||||
getAllExcelField(entity.getExclusions(), targetId, fileds, excelParams, pojoClass, null); | getAllExcelField(entity.getExclusions(), targetId, fileds, excelParams, pojoClass, null); | ||||
@@ -33,7 +33,7 @@ import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | |||||
import org.jeecgframework.poi.excel.entity.params.MergeEntity; | import org.jeecgframework.poi.excel.entity.params.MergeEntity; | ||||
import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; | import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; | ||||
import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler; | import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
/** | /** | ||||
* 提供POI基础操作服务 | * 提供POI基础操作服务 | ||||
@@ -164,7 +164,7 @@ public abstract class ExcelExportBase extends ExportBase { | |||||
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); | ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); | ||||
BufferedImage bufferImg; | BufferedImage bufferImg; | ||||
try { | try { | ||||
String path = POIPublicUtil.getWebRootPath(imagePath); | |||||
String path = PoiPublicUtil.getWebRootPath(imagePath); | |||||
path = path.replace("WEB-INF/classes/", ""); | path = path.replace("WEB-INF/classes/", ""); | ||||
path = path.replace("file:/", ""); | path = path.replace("file:/", ""); | ||||
bufferImg = ImageIO.read(new File(path)); | bufferImg = ImageIO.read(new File(path)); | ||||
@@ -346,7 +346,7 @@ public abstract class ExcelExportBase extends ExportBase { | |||||
* @date 2013年11月25日 | * @date 2013年11月25日 | ||||
*/ | */ | ||||
public int getImageType(byte[] value) { | public int getImageType(byte[] value) { | ||||
String type = POIPublicUtil.getFileExtendName(value); | |||||
String type = PoiPublicUtil.getFileExtendName(value); | |||||
if (type.equalsIgnoreCase("JPG")) { | if (type.equalsIgnoreCase("JPG")) { | ||||
return Workbook.PICTURE_TYPE_JPEG; | return Workbook.PICTURE_TYPE_JPEG; | ||||
} else if (type.equalsIgnoreCase("PNG")) { | } else if (type.equalsIgnoreCase("PNG")) { | ||||
@@ -18,7 +18,7 @@ import org.jeecgframework.poi.excel.annotation.ExcelCollection; | |||||
import org.jeecgframework.poi.excel.annotation.ExcelEntity; | import org.jeecgframework.poi.excel.annotation.ExcelEntity; | ||||
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | ||||
import org.jeecgframework.poi.handler.inter.IExcelDataHandler; | import org.jeecgframework.poi.handler.inter.IExcelDataHandler; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
/** | /** | ||||
* 导出基础处理,不设计POI,只设计对象,保证复用性 | * 导出基础处理,不设计POI,只设计对象,保证复用性 | ||||
@@ -91,23 +91,23 @@ public class ExportBase { | |||||
for (int i = 0; i < fields.length; i++) { | for (int i = 0; i < fields.length; i++) { | ||||
Field field = fields[i]; | Field field = fields[i]; | ||||
// 先判断是不是collection,在判断是不是java自带对象,之后就是我们自己的对象了 | // 先判断是不是collection,在判断是不是java自带对象,之后就是我们自己的对象了 | ||||
if (POIPublicUtil.isNotUserExcelUserThis(exclusionsList, field, targetId)) { | |||||
if (PoiPublicUtil.isNotUserExcelUserThis(exclusionsList, field, targetId)) { | |||||
continue; | continue; | ||||
} | } | ||||
// 首先判断Excel 可能一下特殊数据用户回自定义处理 | // 首先判断Excel 可能一下特殊数据用户回自定义处理 | ||||
if (field.getAnnotation(Excel.class) != null) { | if (field.getAnnotation(Excel.class) != null) { | ||||
excelParams.add(createExcelExportEntity(field, targetId, pojoClass, getMethods)); | excelParams.add(createExcelExportEntity(field, targetId, pojoClass, getMethods)); | ||||
} else if (POIPublicUtil.isCollection(field.getType())) { | |||||
} else if (PoiPublicUtil.isCollection(field.getType())) { | |||||
ExcelCollection excel = field.getAnnotation(ExcelCollection.class); | ExcelCollection excel = field.getAnnotation(ExcelCollection.class); | ||||
ParameterizedType pt = (ParameterizedType) field.getGenericType(); | ParameterizedType pt = (ParameterizedType) field.getGenericType(); | ||||
Class<?> clz = (Class<?>) pt.getActualTypeArguments()[0]; | Class<?> clz = (Class<?>) pt.getActualTypeArguments()[0]; | ||||
List<ExcelExportEntity> list = new ArrayList<ExcelExportEntity>(); | List<ExcelExportEntity> list = new ArrayList<ExcelExportEntity>(); | ||||
getAllExcelField(exclusions, StringUtils.isNotEmpty(excel.id()) ? excel.id() | getAllExcelField(exclusions, StringUtils.isNotEmpty(excel.id()) ? excel.id() | ||||
: targetId, POIPublicUtil.getClassFields(clz), list, clz, null); | |||||
: targetId, PoiPublicUtil.getClassFields(clz), list, clz, null); | |||||
excelEntity = new ExcelExportEntity(); | excelEntity = new ExcelExportEntity(); | ||||
excelEntity.setName(getExcelName(excel.name(), targetId)); | excelEntity.setName(getExcelName(excel.name(), targetId)); | ||||
excelEntity.setOrderNum(getCellOrder(excel.orderNum(), targetId)); | excelEntity.setOrderNum(getCellOrder(excel.orderNum(), targetId)); | ||||
excelEntity.setMethod(POIPublicUtil.getMethod(field.getName(), pojoClass)); | |||||
excelEntity.setMethod(PoiPublicUtil.getMethod(field.getName(), pojoClass)); | |||||
excelEntity.setList(list); | excelEntity.setList(list); | ||||
excelParams.add(excelEntity); | excelParams.add(excelEntity); | ||||
} else { | } else { | ||||
@@ -115,10 +115,10 @@ public class ExportBase { | |||||
if (getMethods != null) { | if (getMethods != null) { | ||||
newMethods.addAll(getMethods); | newMethods.addAll(getMethods); | ||||
} | } | ||||
newMethods.add(POIPublicUtil.getMethod(field.getName(), pojoClass)); | |||||
newMethods.add(PoiPublicUtil.getMethod(field.getName(), pojoClass)); | |||||
ExcelEntity excel = field.getAnnotation(ExcelEntity.class); | ExcelEntity excel = field.getAnnotation(ExcelEntity.class); | ||||
getAllExcelField(exclusions, StringUtils.isNotEmpty(excel.id()) ? excel.id() | getAllExcelField(exclusions, StringUtils.isNotEmpty(excel.id()) ? excel.id() | ||||
: targetId, POIPublicUtil.getClassFields(field.getType()), excelParams, | |||||
: targetId, PoiPublicUtil.getClassFields(field.getType()), excelParams, | |||||
field.getType(), newMethods); | field.getType(), newMethods); | ||||
} | } | ||||
} | } | ||||
@@ -222,7 +222,7 @@ public class ExportBase { | |||||
: excel.format()); | : excel.format()); | ||||
excelEntity.setStatistics(excel.isStatistics()); | excelEntity.setStatistics(excel.isStatistics()); | ||||
String fieldname = field.getName(); | String fieldname = field.getName(); | ||||
excelEntity.setMethod(POIPublicUtil.getMethod(fieldname, pojoClass)); | |||||
excelEntity.setMethod(PoiPublicUtil.getMethod(fieldname, pojoClass)); | |||||
} | } | ||||
/** | /** | ||||
@@ -27,7 +27,7 @@ import org.jeecgframework.poi.excel.export.base.ExcelExportBase; | |||||
import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler; | import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler; | ||||
import org.jeecgframework.poi.exception.excel.ExcelExportException; | import org.jeecgframework.poi.exception.excel.ExcelExportException; | ||||
import org.jeecgframework.poi.exception.excel.enums.ExcelExportEnum; | import org.jeecgframework.poi.exception.excel.enums.ExcelExportEnum; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
@@ -70,7 +70,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||||
Map<String, Integer> titlemap = getTitleMap(params, sheet); | Map<String, Integer> titlemap = getTitleMap(params, sheet); | ||||
Drawing patriarch = sheet.createDrawingPatriarch(); | Drawing patriarch = sheet.createDrawingPatriarch(); | ||||
// 得到所有字段 | // 得到所有字段 | ||||
Field[] fileds = POIPublicUtil.getClassFields(pojoClass); | |||||
Field[] fileds = PoiPublicUtil.getClassFields(pojoClass); | |||||
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | ||||
String targetId = null; | String targetId = null; | ||||
if (etarget != null) { | if (etarget != null) { | ||||
@@ -201,7 +201,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||||
if (params.indexOf(".") != -1) { | if (params.indexOf(".") != -1) { | ||||
String[] paramsArr = params.split("\\."); | String[] paramsArr = params.split("\\."); | ||||
return String | return String | ||||
.valueOf(POIPublicUtil.getValueDoWhile(map.get(paramsArr[0]), paramsArr, 1)); | |||||
.valueOf(PoiPublicUtil.getValueDoWhile(map.get(paramsArr[0]), paramsArr, 1)); | |||||
} | } | ||||
return map.containsKey(params) ? map.get(params).toString() : ""; | return map.containsKey(params) ? map.get(params).toString() : ""; | ||||
} | } | ||||
@@ -257,7 +257,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||||
*/ | */ | ||||
private void setValueForCellByMap(Cell cell, Map<String, Object> map) throws Exception { | private void setValueForCellByMap(Cell cell, Map<String, Object> map) throws Exception { | ||||
int cellType = cell.getCellType(); | int cellType = cell.getCellType(); | ||||
if (cellType != Cell.CELL_TYPE_STRING && cellType == Cell.CELL_TYPE_NUMERIC) { | |||||
if (cellType != Cell.CELL_TYPE_STRING && cellType != Cell.CELL_TYPE_NUMERIC) { | |||||
return; | return; | ||||
} | } | ||||
String oldString; | String oldString; | ||||
@@ -340,7 +340,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||||
row.createCell(i); | row.createCell(i); | ||||
} | } | ||||
for (int i = 0, max = columns.size(); i < max; i++) { | for (int i = 0, max = columns.size(); i < max; i++) { | ||||
String val = String.valueOf(POIPublicUtil.getValueDoWhile(t, columns.get(i) | |||||
String val = String.valueOf(PoiPublicUtil.getValueDoWhile(t, columns.get(i) | |||||
.split("\\."), 0)); | .split("\\."), 0)); | ||||
row.getCell(i + columnIndex).setCellValue(val); | row.getCell(i + columnIndex).setCellValue(val); | ||||
tempCreateCellSet.add(row.getRowNum() + "_" + (i + columnIndex)); | tempCreateCellSet.add(row.getRowNum() + "_" + (i + columnIndex)); | ||||
@@ -153,6 +153,9 @@ public class CellValueServer { | |||||
if (xclass.equals("class java.lang.Long") || xclass.equals("long")) { | if (xclass.equals("class java.lang.Long") || xclass.equals("long")) { | ||||
return Long.valueOf(String.valueOf(result)); | return Long.valueOf(String.valueOf(result)); | ||||
} | } | ||||
if (xclass.equals("class java.lang.Float") || xclass.equals("float")) { | |||||
return Float.valueOf(String.valueOf(result)); | |||||
} | |||||
if (xclass.equals("class java.lang.Integer") || xclass.equals("int")) { | if (xclass.equals("class java.lang.Integer") || xclass.equals("int")) { | ||||
return Integer.valueOf(String.valueOf(result)); | return Integer.valueOf(String.valueOf(result)); | ||||
} | } | ||||
@@ -39,7 +39,7 @@ import org.jeecgframework.poi.excel.imports.base.ImportBaseService; | |||||
import org.jeecgframework.poi.excel.imports.verifys.VerifyHandlerServer; | import org.jeecgframework.poi.excel.imports.verifys.VerifyHandlerServer; | ||||
import org.jeecgframework.poi.exception.excel.ExcelImportException; | import org.jeecgframework.poi.exception.excel.ExcelImportException; | ||||
import org.jeecgframework.poi.exception.excel.enums.ExcelImportEnum; | import org.jeecgframework.poi.exception.excel.enums.ExcelImportEnum; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
@@ -85,9 +85,9 @@ public class ExcelImportServer extends ImportBaseService { | |||||
Map<Integer, String> titlemap, String targetId, | Map<Integer, String> titlemap, String targetId, | ||||
Map<String, PictureData> pictures, ImportParams params) | Map<String, PictureData> pictures, ImportParams params) | ||||
throws Exception { | throws Exception { | ||||
Collection collection = (Collection) POIPublicUtil.getMethod(param.getName(), | |||||
Collection collection = (Collection) PoiPublicUtil.getMethod(param.getName(), | |||||
object.getClass()).invoke(object, new Object[] {}); | object.getClass()).invoke(object, new Object[] {}); | ||||
Object entity = POIPublicUtil.createObject(param.getType(), targetId); | |||||
Object entity = PoiPublicUtil.createObject(param.getType(), targetId); | |||||
String picId; | String picId; | ||||
boolean isUsed = false;// 是否需要加上这个对象 | boolean isUsed = false;// 是否需要加上这个对象 | ||||
for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) { | for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) { | ||||
@@ -159,7 +159,7 @@ public class ExcelImportServer extends ImportBaseService { | |||||
List collection = new ArrayList(); | List collection = new ArrayList(); | ||||
Map<String, ExcelImportEntity> excelParams = new HashMap<String, ExcelImportEntity>(); | Map<String, ExcelImportEntity> excelParams = new HashMap<String, ExcelImportEntity>(); | ||||
List<ExcelCollectionParams> excelCollection = new ArrayList<ExcelCollectionParams>(); | List<ExcelCollectionParams> excelCollection = new ArrayList<ExcelCollectionParams>(); | ||||
Field fileds[] = POIPublicUtil.getClassFields(pojoClass); | |||||
Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); | |||||
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | ||||
String targetId = null; | String targetId = null; | ||||
if (etarget != null) { | if (etarget != null) { | ||||
@@ -197,7 +197,7 @@ public class ExcelImportServer extends ImportBaseService { | |||||
addListContinue(object, param, row, titlemap, targetId, pictures, params); | addListContinue(object, param, row, titlemap, targetId, pictures, params); | ||||
} | } | ||||
} else { | } else { | ||||
object = POIPublicUtil.createObject(pojoClass, targetId); | |||||
object = PoiPublicUtil.createObject(pojoClass, targetId); | |||||
try { | try { | ||||
for (int i = row.getFirstCellNum(), le = row.getLastCellNum(); i < le; i++) { | for (int i = row.getFirstCellNum(), le = row.getLastCellNum(); i < le; i++) { | ||||
Cell cell = row.getCell(i); | Cell cell = row.getCell(i); | ||||
@@ -259,10 +259,10 @@ public class ExcelImportServer extends ImportBaseService { | |||||
LOGGER.debug(" start to read excel by is ,startTime is {}", new Date().getTime()); | LOGGER.debug(" start to read excel by is ,startTime is {}", new Date().getTime()); | ||||
} | } | ||||
if (isXSSFWorkbook) { | if (isXSSFWorkbook) { | ||||
pictures = POIPublicUtil.getSheetPictrues07((XSSFSheet) book.getSheetAt(i), | |||||
pictures = PoiPublicUtil.getSheetPictrues07((XSSFSheet) book.getSheetAt(i), | |||||
(XSSFWorkbook) book); | (XSSFWorkbook) book); | ||||
} else { | } else { | ||||
pictures = POIPublicUtil.getSheetPictrues03((HSSFSheet) book.getSheetAt(i), | |||||
pictures = PoiPublicUtil.getSheetPictrues03((HSSFSheet) book.getSheetAt(i), | |||||
(HSSFWorkbook) book); | (HSSFWorkbook) book); | ||||
} | } | ||||
if (LOGGER.isDebugEnabled()) { | if (LOGGER.isDebugEnabled()) { | ||||
@@ -328,9 +328,9 @@ public class ExcelImportServer extends ImportBaseService { | |||||
PictureData image = pictures.get(picId); | PictureData image = pictures.get(picId); | ||||
byte[] data = image.getData(); | byte[] data = image.getData(); | ||||
String fileName = "pic" + Math.round(Math.random() * 100000000000L); | String fileName = "pic" + Math.round(Math.random() * 100000000000L); | ||||
fileName += "." + POIPublicUtil.getFileExtendName(data); | |||||
fileName += "." + PoiPublicUtil.getFileExtendName(data); | |||||
if (excelParams.get(titleString).getSaveType() == 1) { | if (excelParams.get(titleString).getSaveType() == 1) { | ||||
String path = POIPublicUtil.getWebRootPath(getSaveUrl(excelParams.get(titleString), | |||||
String path = PoiPublicUtil.getWebRootPath(getSaveUrl(excelParams.get(titleString), | |||||
object)); | object)); | ||||
File savefile = new File(path); | File savefile = new File(path); | ||||
if (!savefile.exists()) { | if (!savefile.exists()) { | ||||
@@ -20,7 +20,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams; | |||||
import org.jeecgframework.poi.excel.entity.params.ExcelCollectionParams; | import org.jeecgframework.poi.excel.entity.params.ExcelCollectionParams; | ||||
import org.jeecgframework.poi.excel.entity.params.ExcelImportEntity; | import org.jeecgframework.poi.excel.entity.params.ExcelImportEntity; | ||||
import org.jeecgframework.poi.excel.entity.params.ExcelVerifyEntity; | import org.jeecgframework.poi.excel.entity.params.ExcelVerifyEntity; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
/** | /** | ||||
* 导入基础和,普通方法和Sax共用 | * 导入基础和,普通方法和Sax共用 | ||||
@@ -104,10 +104,10 @@ public class ImportBaseService { | |||||
ExcelImportEntity excelEntity = null; | ExcelImportEntity excelEntity = null; | ||||
for (int i = 0; i < fields.length; i++) { | for (int i = 0; i < fields.length; i++) { | ||||
Field field = fields[i]; | Field field = fields[i]; | ||||
if (POIPublicUtil.isNotUserExcelUserThis(null, field, targetId)) { | |||||
if (PoiPublicUtil.isNotUserExcelUserThis(null, field, targetId)) { | |||||
continue; | continue; | ||||
} | } | ||||
if (POIPublicUtil.isCollection(field.getType())) { | |||||
if (PoiPublicUtil.isCollection(field.getType())) { | |||||
// 集合对象设置属性 | // 集合对象设置属性 | ||||
ExcelCollectionParams collection = new ExcelCollectionParams(); | ExcelCollectionParams collection = new ExcelCollectionParams(); | ||||
collection.setName(field.getName()); | collection.setName(field.getName()); | ||||
@@ -115,18 +115,18 @@ public class ImportBaseService { | |||||
ParameterizedType pt = (ParameterizedType) field.getGenericType(); | ParameterizedType pt = (ParameterizedType) field.getGenericType(); | ||||
Class<?> clz = (Class<?>) pt.getActualTypeArguments()[0]; | Class<?> clz = (Class<?>) pt.getActualTypeArguments()[0]; | ||||
collection.setType(clz); | collection.setType(clz); | ||||
getExcelFieldList(targetId, POIPublicUtil.getClassFields(clz), clz, temp, null); | |||||
getExcelFieldList(targetId, PoiPublicUtil.getClassFields(clz), clz, temp, null); | |||||
collection.setExcelParams(temp); | collection.setExcelParams(temp); | ||||
excelCollection.add(collection); | excelCollection.add(collection); | ||||
} else if (POIPublicUtil.isJavaClass(field)) { | |||||
} else if (PoiPublicUtil.isJavaClass(field)) { | |||||
addEntityToMap(targetId, field, excelEntity, pojoClass, getMethods, excelParams); | addEntityToMap(targetId, field, excelEntity, pojoClass, getMethods, excelParams); | ||||
} else { | } else { | ||||
List<Method> newMethods = new ArrayList<Method>(); | List<Method> newMethods = new ArrayList<Method>(); | ||||
if (getMethods != null) { | if (getMethods != null) { | ||||
newMethods.addAll(getMethods); | newMethods.addAll(getMethods); | ||||
} | } | ||||
newMethods.add(POIPublicUtil.getMethod(field.getName(), pojoClass)); | |||||
getAllExcelField(targetId, POIPublicUtil.getClassFields(field.getType()), | |||||
newMethods.add(PoiPublicUtil.getMethod(field.getName(), pojoClass)); | |||||
getAllExcelField(targetId, PoiPublicUtil.getClassFields(field.getType()), | |||||
excelParams, excelCollection, field.getType(), newMethods); | excelParams, excelCollection, field.getType(), newMethods); | ||||
} | } | ||||
} | } | ||||
@@ -136,7 +136,7 @@ public class ImportBaseService { | |||||
Excel excel, Class<?> pojoClass) throws Exception { | Excel excel, Class<?> pojoClass) throws Exception { | ||||
excelEntity.setName(getExcelName(excel.name(), targetId)); | excelEntity.setName(getExcelName(excel.name(), targetId)); | ||||
String fieldname = field.getName(); | String fieldname = field.getName(); | ||||
excelEntity.setMethod(POIPublicUtil.getMethod(fieldname, pojoClass, field.getType())); | |||||
excelEntity.setMethod(PoiPublicUtil.getMethod(fieldname, pojoClass, field.getType())); | |||||
if (StringUtils.isEmpty(excel.importFormat())) { | if (StringUtils.isEmpty(excel.importFormat())) { | ||||
excelEntity.setFormat(excel.format()); | excelEntity.setFormat(excel.format()); | ||||
} else { | } else { | ||||
@@ -150,10 +150,10 @@ public class ImportBaseService { | |||||
ExcelImportEntity excelEntity = null; | ExcelImportEntity excelEntity = null; | ||||
for (int i = 0; i < fields.length; i++) { | for (int i = 0; i < fields.length; i++) { | ||||
Field field = fields[i]; | Field field = fields[i]; | ||||
if (POIPublicUtil.isNotUserExcelUserThis(null, field, targetId)) { | |||||
if (PoiPublicUtil.isNotUserExcelUserThis(null, field, targetId)) { | |||||
continue; | continue; | ||||
} | } | ||||
if (POIPublicUtil.isJavaClass(field)) { | |||||
if (PoiPublicUtil.isJavaClass(field)) { | |||||
addEntityToMap(targetId, field, excelEntity, pojoClass, getMethods, temp); | addEntityToMap(targetId, field, excelEntity, pojoClass, getMethods, temp); | ||||
} else { | } else { | ||||
List<Method> newMethods = new ArrayList<Method>(); | List<Method> newMethods = new ArrayList<Method>(); | ||||
@@ -161,8 +161,8 @@ public class ImportBaseService { | |||||
newMethods.addAll(getMethods); | newMethods.addAll(getMethods); | ||||
} | } | ||||
newMethods | newMethods | ||||
.add(POIPublicUtil.getMethod(field.getName(), pojoClass, field.getType())); | |||||
getExcelFieldList(targetId, POIPublicUtil.getClassFields(field.getType()), | |||||
.add(PoiPublicUtil.getMethod(field.getName(), pojoClass, field.getType())); | |||||
getExcelFieldList(targetId, PoiPublicUtil.getClassFields(field.getType()), | |||||
field.getType(), temp, newMethods); | field.getType(), temp, newMethods); | ||||
} | } | ||||
} | } | ||||
@@ -199,7 +199,7 @@ public class ImportBaseService { | |||||
public void saveThisExcel(ImportParams params, Class<?> pojoClass, boolean isXSSFWorkbook, | public void saveThisExcel(ImportParams params, Class<?> pojoClass, boolean isXSSFWorkbook, | ||||
Workbook book) throws Exception { | Workbook book) throws Exception { | ||||
String path = POIPublicUtil.getWebRootPath(getSaveExcelUrl(params, pojoClass)); | |||||
String path = PoiPublicUtil.getWebRootPath(getSaveExcelUrl(params, pojoClass)); | |||||
File savefile = new File(path); | File savefile = new File(path); | ||||
if (!savefile.exists()) { | if (!savefile.exists()) { | ||||
savefile.mkdirs(); | savefile.mkdirs(); | ||||
@@ -17,7 +17,7 @@ import org.jeecgframework.poi.excel.imports.CellValueServer; | |||||
import org.jeecgframework.poi.excel.imports.base.ImportBaseService; | import org.jeecgframework.poi.excel.imports.base.ImportBaseService; | ||||
import org.jeecgframework.poi.exception.excel.ExcelImportException; | import org.jeecgframework.poi.exception.excel.ExcelImportException; | ||||
import org.jeecgframework.poi.handler.inter.IExcelReadRowHanlder; | import org.jeecgframework.poi.handler.inter.IExcelReadRowHanlder; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
@@ -67,7 +67,7 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { | |||||
private void initParams(Class<?> pojoClass, ImportParams params) { | private void initParams(Class<?> pojoClass, ImportParams params) { | ||||
try { | try { | ||||
Field fileds[] = POIPublicUtil.getClassFields(pojoClass); | |||||
Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); | |||||
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | ||||
if (etarget != null) { | if (etarget != null) { | ||||
targetId = etarget.value(); | targetId = etarget.value(); | ||||
@@ -122,7 +122,7 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { | |||||
if (object != null && hanlder != null) { | if (object != null && hanlder != null) { | ||||
hanlder.hanlder(object); | hanlder.hanlder(object); | ||||
} | } | ||||
object = POIPublicUtil.createObject(pojoClass, targetId); | |||||
object = PoiPublicUtil.createObject(pojoClass, targetId); | |||||
SaxReadCellEntity entity; | SaxReadCellEntity entity; | ||||
for (int i = 0, le = datas.size(); i < le; i++) { | for (int i = 0, le = datas.size(); i < le; i++) { | ||||
entity = datas.get(i); | entity = datas.get(i); | ||||
@@ -155,9 +155,9 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { | |||||
private void addListContinue(Object object, ExcelCollectionParams param, | private void addListContinue(Object object, ExcelCollectionParams param, | ||||
List<SaxReadCellEntity> datas, Map<Integer, String> titlemap, | List<SaxReadCellEntity> datas, Map<Integer, String> titlemap, | ||||
String targetId, ImportParams params) throws Exception { | String targetId, ImportParams params) throws Exception { | ||||
Collection collection = (Collection) POIPublicUtil.getMethod(param.getName(), | |||||
Collection collection = (Collection) PoiPublicUtil.getMethod(param.getName(), | |||||
object.getClass()).invoke(object, new Object[] {}); | object.getClass()).invoke(object, new Object[] {}); | ||||
Object entity = POIPublicUtil.createObject(param.getType(), targetId); | |||||
Object entity = PoiPublicUtil.createObject(param.getType(), targetId); | |||||
boolean isUsed = false;// 是否需要加上这个对象 | boolean isUsed = false;// 是否需要加上这个对象 | ||||
for (int i = 0; i < datas.size(); i++) { | for (int i = 0; i < datas.size(); i++) { | ||||
String titleString = (String) titlemap.get(i); | String titleString = (String) titlemap.get(i); | ||||
@@ -0,0 +1,218 @@ | |||||
package org.jeecgframework.poi.util; | |||||
import java.util.Map; | |||||
import org.jeecgframework.poi.exception.excel.ExcelExportException; | |||||
/** | |||||
* EasyPoi的el 表达式支持工具类 | |||||
* @author JueYue | |||||
* @date 2015年4月25日 下午12:13:21 | |||||
*/ | |||||
public final class PoiElUtil { | |||||
private static final String LENGTH = "le:"; | |||||
private static final String FORMAT_DATE = "fd:"; | |||||
private static final String FORMAT_NUMBER = "fn:"; | |||||
private static final String IF_DELETE = "!if:"; | |||||
private static final String EMPTY = ""; | |||||
private static final String LEFT_BRACKET = "("; | |||||
private static final String RIGHT_BRACKET = ")"; | |||||
private PoiElUtil() { | |||||
} | |||||
/** | |||||
* 解析字符串,支持 le,fd,fn,!if,三目 | |||||
* @param obj | |||||
* @param map | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
public static Object eval(String text, Map<String, Object> map) throws Exception { | |||||
String tempText = new String(text); | |||||
Object obj = innerEval(text, map); | |||||
//如果没有被处理而且这个值找map中存在就处理这个值 | |||||
if (tempText.equals(obj.toString()) && map.containsKey(tempText.split("\\.")[0])) { | |||||
return PoiPublicUtil.getParamsValue(tempText, map); | |||||
} | |||||
return obj; | |||||
} | |||||
/** | |||||
* 解析字符串,支持 le,fd,fn,!if,三目 | |||||
* @param obj | |||||
* @param map | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
public static Object innerEval(String text, Map<String, Object> map) throws Exception { | |||||
if (text.indexOf("?") != -1 && text.indexOf(":") != -1) { | |||||
return trinocular(text, map); | |||||
} | |||||
if (text.indexOf(LENGTH) != -1) { | |||||
return length(text, map); | |||||
} | |||||
if (text.indexOf(FORMAT_DATE) != -1) { | |||||
return formatDate(text, map); | |||||
} | |||||
if (text.indexOf(FORMAT_NUMBER) != -1) { | |||||
return formatNumber(text, map); | |||||
} | |||||
if (text.indexOf(IF_DELETE) != -1) { | |||||
return ifDelete(text, map); | |||||
} | |||||
if (text.startsWith("'")) { | |||||
return text.replace("'", ""); | |||||
} | |||||
return text; | |||||
} | |||||
/** | |||||
* 是不是删除列 | |||||
* @param text | |||||
* @param map | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
private static Object ifDelete(String text, Map<String, Object> map) throws Exception { | |||||
//把多个空格变成一个空格 | |||||
text = text.replaceAll("\\s{1,}", " ").trim(); | |||||
String[] keys = getKey(IF_DELETE, text).split(" "); | |||||
text = text.replace(IF_DELETE, EMPTY); | |||||
return isTrue(keys, map); | |||||
} | |||||
/** | |||||
* 是不是真 | |||||
* @param keys | |||||
* @param map | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
private static Boolean isTrue(String[] keys, Map<String, Object> map) throws Exception { | |||||
if (keys.length == 0) { | |||||
String constant = null; | |||||
if ((constant = isConstant(keys[0])) != null) { | |||||
return Boolean.valueOf(constant); | |||||
} | |||||
return Boolean.valueOf(PoiPublicUtil.getParamsValue(keys[0], map).toString()); | |||||
} | |||||
if (keys.length == 3) { | |||||
Object first = eval(keys[0], map); | |||||
Object second = eval(keys[2], map); | |||||
return PoiFunctionUtil.isTrue(first, keys[1], second); | |||||
} | |||||
throw new ExcelExportException("判断参数不对"); | |||||
} | |||||
/** | |||||
* 判断是不是常量 | |||||
* @param string | |||||
* @return | |||||
*/ | |||||
private static String isConstant(String param) { | |||||
if (param.indexOf("'") != -1) { | |||||
return param.replace("'", ""); | |||||
} | |||||
return null; | |||||
} | |||||
/** | |||||
* 格式化数字 | |||||
* @param text | |||||
* @param map | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
private static Object formatNumber(String text, Map<String, Object> map) throws Exception { | |||||
String[] key = getKey(FORMAT_NUMBER, text).split(";"); | |||||
text = text.replace(FORMAT_NUMBER, EMPTY); | |||||
return innerEval( | |||||
replacinnerEvalue(text, | |||||
PoiFunctionUtil.formatNumber(PoiPublicUtil.getParamsValue(key[0], map), key[1])), | |||||
map); | |||||
} | |||||
/** | |||||
* 格式化时间 | |||||
* @param text | |||||
* @param map | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
private static Object formatDate(String text, Map<String, Object> map) throws Exception { | |||||
String[] key = getKey(FORMAT_DATE, text).split(";"); | |||||
text = text.replace(FORMAT_DATE, EMPTY); | |||||
return innerEval( | |||||
replacinnerEvalue(text, | |||||
PoiFunctionUtil.formatDate(PoiPublicUtil.getParamsValue(key[0], map), key[1])), map); | |||||
} | |||||
/** | |||||
* 计算这个的长度 | |||||
* @param text | |||||
* @param map | |||||
* @throws Exception | |||||
*/ | |||||
private static Object length(String text, Map<String, Object> map) throws Exception { | |||||
String key = getKey(LENGTH, text); | |||||
text = text.replace(LENGTH, EMPTY); | |||||
Object val = PoiPublicUtil.getParamsValue(key, map); | |||||
return innerEval(replacinnerEvalue(text, PoiFunctionUtil.length(val)), map); | |||||
} | |||||
private static String replacinnerEvalue(String text, Object val) { | |||||
StringBuilder sb = new StringBuilder(); | |||||
sb.append(text.substring(0, text.indexOf(LEFT_BRACKET))); | |||||
sb.append(" "); | |||||
sb.append(val); | |||||
sb.append(" "); | |||||
sb.append(text.substring(text.indexOf(RIGHT_BRACKET) + 1, text.length())); | |||||
return sb.toString().trim(); | |||||
} | |||||
private static String getKey(String prefix, String text) { | |||||
int leftBracket = 1, rigthBracket = 0, position = 0; | |||||
int index = text.indexOf(prefix) + prefix.length(); | |||||
while (text.charAt(index) == " ".charAt(0)) { | |||||
text = text.substring(0, index) + text.substring(index + 1, text.length()); | |||||
} | |||||
for (int i = text.indexOf(prefix + LEFT_BRACKET) + prefix.length() + 1; i < text.length(); i++) { | |||||
if (text.charAt(i) == LEFT_BRACKET.charAt(0)) { | |||||
leftBracket++; | |||||
} | |||||
if (text.charAt(i) == RIGHT_BRACKET.charAt(0)) { | |||||
rigthBracket++; | |||||
} | |||||
if (leftBracket == rigthBracket) { | |||||
position = i; | |||||
break; | |||||
} | |||||
} | |||||
return text.substring(text.indexOf(prefix + LEFT_BRACKET) + 1 + prefix.length(), position) | |||||
.trim(); | |||||
} | |||||
public static void main(String[] args) { | |||||
System.out.println(getKey(IF_DELETE, "测试 " + IF_DELETE + " (小明)")); | |||||
} | |||||
/** | |||||
* 三目运算 | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
private static Object trinocular(String text, Map<String, Object> map) throws Exception { | |||||
//把多个空格变成一个空格 | |||||
text = text.replaceAll("\\s{1,}", " ").trim(); | |||||
String testText = text.substring(0, text.indexOf("?")); | |||||
text = text.substring(text.indexOf("?") + 1, text.length()).trim(); | |||||
text = innerEval(text, map).toString(); | |||||
String[] keys = text.split(":"); | |||||
Object first = eval(keys[0].trim(), map); | |||||
Object second = eval(keys[1].trim(), map); | |||||
return isTrue(testText.split(" "), map) ? first : second; | |||||
} | |||||
} |
@@ -0,0 +1,147 @@ | |||||
package org.jeecgframework.poi.util; | |||||
import java.lang.reflect.Array; | |||||
import java.text.DecimalFormat; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.Collection; | |||||
import java.util.Map; | |||||
import org.jeecgframework.poi.exception.excel.ExcelExportException; | |||||
/** | |||||
* if else,length,for each,fromatNumber,formatDate | |||||
* 满足模板的 el 表达式支持 | |||||
* @author JueYue | |||||
* @date 2015年4月24日 下午8:04:02 | |||||
*/ | |||||
public final class PoiFunctionUtil { | |||||
private static final String TWO_DECIMAL_STR = "###.00"; | |||||
private static final String THREE_DECIMAL_STR = "###.000"; | |||||
private static final DecimalFormat TWO_DECIMAL = new DecimalFormat(TWO_DECIMAL_STR); | |||||
private static final DecimalFormat THREE_DECIMAL = new DecimalFormat(THREE_DECIMAL_STR); | |||||
private static final String DAY_STR = "yyyy-MM-dd"; | |||||
private static final String TIME_STR = "yyyy-MM-dd HH:mm:ss"; | |||||
private static final String TIME__NO_S_STR = "yyyy-MM-dd HH:mm"; | |||||
private static final SimpleDateFormat DAY_FORMAT = new SimpleDateFormat(DAY_STR); | |||||
private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat(TIME_STR); | |||||
private static final SimpleDateFormat TIME__NO_S_FORMAT = new SimpleDateFormat(TIME__NO_S_STR); | |||||
private PoiFunctionUtil() { | |||||
} | |||||
/** | |||||
* 获取对象的长度 | |||||
* @param obj | |||||
* @return | |||||
*/ | |||||
@SuppressWarnings("rawtypes") | |||||
public static int length(Object obj) { | |||||
if (obj == null) { | |||||
return 0; | |||||
} | |||||
if (obj instanceof Map) { | |||||
return ((Map) obj).size(); | |||||
} | |||||
if (obj instanceof Collection) { | |||||
return ((Collection) obj).size(); | |||||
} | |||||
if (obj.getClass().isArray()) { | |||||
return Array.getLength(obj); | |||||
} | |||||
return String.valueOf(obj).length(); | |||||
} | |||||
/** | |||||
* 格式化数字 | |||||
* @param obj | |||||
* @throws NumberFormatException | |||||
* @return | |||||
*/ | |||||
public static String formatNumber(Object obj, String format) { | |||||
if (obj == null) { | |||||
return ""; | |||||
} | |||||
double number = Double.valueOf(obj.toString()); | |||||
DecimalFormat decimalFormat = null; | |||||
if (TWO_DECIMAL.equals(format)) { | |||||
decimalFormat = TWO_DECIMAL; | |||||
} else if (THREE_DECIMAL_STR.equals(format)) { | |||||
decimalFormat = THREE_DECIMAL; | |||||
} else { | |||||
decimalFormat = new DecimalFormat(format); | |||||
} | |||||
return decimalFormat.format(number); | |||||
} | |||||
/** | |||||
* 格式化时间 | |||||
* @param obj | |||||
* @return | |||||
*/ | |||||
public static String formatDate(Object obj, String format) { | |||||
if (obj == null) { | |||||
return ""; | |||||
} | |||||
SimpleDateFormat dateFormat = null; | |||||
if (DAY_STR.equals(format)) { | |||||
dateFormat = DAY_FORMAT; | |||||
} else if (TIME_STR.equals(format)) { | |||||
dateFormat = TIME_FORMAT; | |||||
} else if (TIME__NO_S_STR.equals(format)) { | |||||
dateFormat = TIME__NO_S_FORMAT; | |||||
} else { | |||||
dateFormat = new SimpleDateFormat(format); | |||||
} | |||||
return dateFormat.format(obj); | |||||
} | |||||
/** | |||||
* 判断是不是成功 | |||||
* @param first | |||||
* @param operator | |||||
* @param second | |||||
* @return | |||||
*/ | |||||
public static boolean isTrue(Object first, String operator, Object second) { | |||||
if (">".endsWith(operator)) { | |||||
return isGt(first, second); | |||||
} else if ("<".endsWith(operator)) { | |||||
return isGt(second, first); | |||||
} else if ("==".endsWith(operator)) { | |||||
if (first != null && second != null) { | |||||
return first.equals(second); | |||||
} | |||||
return first == second; | |||||
} else if ("!=".endsWith(operator)) { | |||||
if (first != null && second != null) { | |||||
return !first.equals(second); | |||||
} | |||||
return first != second; | |||||
} else { | |||||
throw new ExcelExportException("占不支持改操作符"); | |||||
} | |||||
} | |||||
/** | |||||
* 前者是不是大于后者 | |||||
* @param first | |||||
* @param second | |||||
* @return | |||||
*/ | |||||
private static boolean isGt(Object first, Object second) { | |||||
if (first == null) { | |||||
return false; | |||||
} | |||||
if (second == null) { | |||||
return false; | |||||
} | |||||
double one = Double.valueOf(first.toString()); | |||||
double two = Double.valueOf(second.toString()); | |||||
return one > two; | |||||
} | |||||
} |
@@ -42,9 +42,9 @@ import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; | |||||
* @author JueYue | * @author JueYue | ||||
* @date 2015年4月5日 上午12:59:22 | * @date 2015年4月5日 上午12:59:22 | ||||
*/ | */ | ||||
public final class POIPublicUtil { | |||||
public final class PoiPublicUtil { | |||||
private POIPublicUtil() { | |||||
private PoiPublicUtil() { | |||||
} | } | ||||
@@ -219,7 +219,7 @@ public final class POIPublicUtil { | |||||
public static String getWebRootPath(String filePath) { | public static String getWebRootPath(String filePath) { | ||||
try { | try { | ||||
String path = POIPublicUtil.class.getClassLoader().getResource("").toURI().getPath(); | |||||
String path = PoiPublicUtil.class.getClassLoader().getResource("").toURI().getPath(); | |||||
path = path.replace("WEB-INF/classes/", ""); | path = path.replace("WEB-INF/classes/", ""); | ||||
path = path.replace("file:/", ""); | path = path.replace("file:/", ""); | ||||
return path + filePath; | return path + filePath; | ||||
@@ -349,7 +349,7 @@ public final class POIPublicUtil { | |||||
type = entity.getUrl().split("/.")[entity.getUrl().split("/.").length - 1]; | type = entity.getUrl().split("/.")[entity.getUrl().split("/.").length - 1]; | ||||
} else { | } else { | ||||
result[0] = entity.getData(); | result[0] = entity.getData(); | ||||
type = POIPublicUtil.getFileExtendName(entity.getData()); | |||||
type = PoiPublicUtil.getFileExtendName(entity.getData()); | |||||
} | } | ||||
result[1] = getImageType(type); | result[1] = getImageType(type); | ||||
return result; | return result; | ||||
@@ -362,7 +362,7 @@ public final class POIPublicUtil { | |||||
* @param map | * @param map | ||||
* @return | * @return | ||||
*/ | */ | ||||
private static Object getParamsValue(String params, Map<String, Object> map) throws Exception { | |||||
public static Object getParamsValue(String params, Map<String, Object> map) throws Exception { | |||||
if (params.indexOf(".") != -1) { | if (params.indexOf(".") != -1) { | ||||
String[] paramsArr = params.split("\\."); | String[] paramsArr = params.split("\\."); | ||||
return getValueDoWhile(map.get(paramsArr[0]), paramsArr, 1); | return getValueDoWhile(map.get(paramsArr[0]), paramsArr, 1); |
@@ -12,10 +12,10 @@ import org.jeecgframework.poi.word.parse.ParseWord07; | |||||
* @date 2013-11-16 | * @date 2013-11-16 | ||||
* @version 1.0 | * @version 1.0 | ||||
*/ | */ | ||||
public class WordExportUtil { | |||||
private WordExportUtil(){ | |||||
public final class WordExportUtil { | |||||
private WordExportUtil() { | |||||
} | } | ||||
/** | /** | ||||
@@ -14,7 +14,7 @@ import org.apache.poi.xwpf.usermodel.XWPFTable; | |||||
import org.apache.poi.xwpf.usermodel.XWPFTableCell; | import org.apache.poi.xwpf.usermodel.XWPFTableCell; | ||||
import org.apache.poi.xwpf.usermodel.XWPFTableRow; | import org.apache.poi.xwpf.usermodel.XWPFTableRow; | ||||
import org.jeecgframework.poi.cache.WordCache; | import org.jeecgframework.poi.cache.WordCache; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
import org.jeecgframework.poi.word.entity.MyXWPFDocument; | import org.jeecgframework.poi.word.entity.MyXWPFDocument; | ||||
import org.jeecgframework.poi.word.entity.WordImageEntity; | import org.jeecgframework.poi.word.entity.WordImageEntity; | ||||
import org.jeecgframework.poi.word.entity.params.ExcelListEntity; | import org.jeecgframework.poi.word.entity.params.ExcelListEntity; | ||||
@@ -45,7 +45,7 @@ public class ParseWord07 { | |||||
* @throws Exception | * @throws Exception | ||||
*/ | */ | ||||
private void addAnImage(WordImageEntity obj, XWPFRun currentRun) throws Exception { | private void addAnImage(WordImageEntity obj, XWPFRun currentRun) throws Exception { | ||||
Object[] isAndType = POIPublicUtil.getIsAndType(obj); | |||||
Object[] isAndType = PoiPublicUtil.getIsAndType(obj); | |||||
String picId; | String picId; | ||||
try { | try { | ||||
picId = currentRun.getParagraph().getDocument() | picId = currentRun.getParagraph().getDocument() | ||||
@@ -70,7 +70,7 @@ public class ParseWord07 { | |||||
*/ | */ | ||||
private void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText, | private void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText, | ||||
List<Integer> runIndex, Map<String, Object> map) throws Exception { | List<Integer> runIndex, Map<String, Object> map) throws Exception { | ||||
Object obj = POIPublicUtil.getRealValue(currentText, map); | |||||
Object obj = PoiPublicUtil.getRealValue(currentText, map); | |||||
if (obj instanceof WordImageEntity) {// 如果是图片就设置为图片 | if (obj instanceof WordImageEntity) {// 如果是图片就设置为图片 | ||||
currentRun.setText("", 0); | currentRun.setText("", 0); | ||||
addAnImage((WordImageEntity) obj, currentRun); | addAnImage((WordImageEntity) obj, currentRun); | ||||
@@ -97,7 +97,7 @@ public class ParseWord07 { | |||||
String text = cell.getText().trim(); | String text = cell.getText().trim(); | ||||
// 判断是不是迭代输出 | // 判断是不是迭代输出 | ||||
if (text.startsWith("{{") && text.endsWith("}}") && text.indexOf("in ") != -1) { | if (text.startsWith("{{") && text.endsWith("}}") && text.indexOf("in ") != -1) { | ||||
return POIPublicUtil.getRealValue(text.replace("in ", "").trim(), map); | |||||
return PoiPublicUtil.getRealValue(text.replace("in ", "").trim(), map); | |||||
} | } | ||||
return null; | return null; | ||||
} | } | ||||
@@ -17,7 +17,7 @@ import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | |||||
import org.jeecgframework.poi.excel.export.base.ExportBase; | import org.jeecgframework.poi.excel.export.base.ExportBase; | ||||
import org.jeecgframework.poi.exception.word.WordExportException; | import org.jeecgframework.poi.exception.word.WordExportException; | ||||
import org.jeecgframework.poi.exception.word.enmus.WordExportEnum; | import org.jeecgframework.poi.exception.word.enmus.WordExportEnum; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
import org.jeecgframework.poi.word.entity.params.ExcelListEntity; | import org.jeecgframework.poi.word.entity.params.ExcelListEntity; | ||||
/** | /** | ||||
@@ -139,7 +139,7 @@ public class ExcelEntityParse extends ExportBase { | |||||
Map<String, Integer> titlemap = getTitleMap(table, index, entity.getHeadRows()); | Map<String, Integer> titlemap = getTitleMap(table, index, entity.getHeadRows()); | ||||
try { | try { | ||||
// 得到所有字段 | // 得到所有字段 | ||||
Field fileds[] = POIPublicUtil.getClassFields(entity.getClazz()); | |||||
Field fileds[] = PoiPublicUtil.getClassFields(entity.getClazz()); | |||||
ExcelTarget etarget = entity.getClazz().getAnnotation(ExcelTarget.class); | ExcelTarget etarget = entity.getClazz().getAnnotation(ExcelTarget.class); | ||||
String targetId = null; | String targetId = null; | ||||
if (etarget != null) { | if (etarget != null) { | ||||
@@ -5,7 +5,7 @@ import java.util.List; | |||||
import org.apache.poi.xwpf.usermodel.XWPFTable; | import org.apache.poi.xwpf.usermodel.XWPFTable; | ||||
import org.apache.poi.xwpf.usermodel.XWPFTableCell; | import org.apache.poi.xwpf.usermodel.XWPFTableCell; | ||||
import org.apache.poi.xwpf.usermodel.XWPFTableRow; | import org.apache.poi.xwpf.usermodel.XWPFTableRow; | ||||
import org.jeecgframework.poi.util.POIPublicUtil; | |||||
import org.jeecgframework.poi.util.PoiPublicUtil; | |||||
/** | /** | ||||
* 处理和生成Map 类型的数据变成表格 | * 处理和生成Map 类型的数据变成表格 | ||||
@@ -54,12 +54,12 @@ public final class ExcelMapParse { | |||||
.getTableCells() | .getTableCells() | ||||
.get(cellIndex) | .get(cellIndex) | ||||
.setText( | .setText( | ||||
POIPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0) | |||||
PoiPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0) | |||||
.toString()); | .toString()); | ||||
} | } | ||||
for (; cellIndex < params.length; cellIndex++) { | for (; cellIndex < params.length; cellIndex++) { | ||||
currentRow.createCell().setText( | currentRow.createCell().setText( | ||||
POIPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0) | |||||
PoiPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0) | |||||
.toString()); | .toString()); | ||||
} | } | ||||
} | } | ||||
@@ -7,6 +7,9 @@ public class UtilTest { | |||||
text = text.replace("{{", "").replace("}}", "").replaceAll("\\s{1,}", " ").trim(); | text = text.replace("{{", "").replace("}}", "").replaceAll("\\s{1,}", " ").trim(); | ||||
System.out.println(text); | System.out.println(text); | ||||
System.out.println(text.length()); | System.out.println(text.length()); | ||||
} | } | ||||
} | } |
@@ -0,0 +1,103 @@ | |||||
package org.jeecgframework.poi.util; | |||||
import static org.junit.Assert.*; | |||||
import java.util.Date; | |||||
import java.util.HashMap; | |||||
import java.util.Map; | |||||
import junit.framework.Assert; | |||||
import org.junit.Test; | |||||
public class PoiElUtilTest { | |||||
@Test | |||||
public void testEval() throws Exception { | |||||
Map<String, Object> map = new HashMap<String, Object>(); | |||||
map.put("jueyue", "jueyue"); | |||||
//length 测试 | |||||
Object obj = PoiElUtil.eval("le:(jueyue)", map); | |||||
Assert.assertEquals("6", obj); | |||||
//format date 测试 | |||||
map.put("date", new Date()); | |||||
obj = PoiElUtil.eval("fd:(date;yyyy-MM-dd)", map); | |||||
System.out.println(obj); | |||||
obj = PoiElUtil.eval("fd:(date;yyyy-MM-dd HH:mm:ss)", map); | |||||
System.out.println(obj); | |||||
obj = PoiElUtil.eval("fd:(date;yyyy-MM-dd HH:mm)", map); | |||||
System.out.println(obj); | |||||
obj = PoiElUtil.eval("fd:(date;yyyy/MM/dd HH:mm:ss)", map); | |||||
System.out.println(obj); | |||||
map.put("date2", new Date().getTime()); | |||||
obj = PoiElUtil.eval("fd:(date2;yyyy-MM-dd)", map); | |||||
System.out.println(obj); | |||||
obj = PoiElUtil.eval("fd:(date2;yyyy-MM-dd HH:mm:ss)", map); | |||||
System.out.println(obj); | |||||
obj = PoiElUtil.eval("fd:(date2;yyyy-MM-dd HH:mm)", map); | |||||
System.out.println(obj); | |||||
obj = PoiElUtil.eval("fd:(date2;yyyy/MM/dd HH:mm:ss)", map); | |||||
System.out.println(obj); | |||||
//format number 测试 | |||||
map.put("number", 213123123123.34234234); | |||||
obj = PoiElUtil.eval("fn:(number;###.00)", map); | |||||
System.out.println(obj); | |||||
obj = PoiElUtil.eval("fn:(number;###.0)", map); | |||||
System.out.println(obj); | |||||
obj = PoiElUtil.eval("fn:(number;#,###.0)", map); | |||||
System.out.println(obj); | |||||
// !if 测试 | |||||
obj = PoiElUtil.eval("!if:(le:(jueyue) == '6')", map); | |||||
Assert.assertEquals(obj, true); | |||||
obj = PoiElUtil.eval("!if:(fd:(date2;yyyy-MM-dd) == '2015-04-25')", map); | |||||
Assert.assertEquals(obj, true); | |||||
obj = PoiElUtil.eval("!if:(fn:(number;###.0) > '3')", map); | |||||
Assert.assertEquals(obj, true); | |||||
map.put("key1", "测试1"); | |||||
//三目运算 | |||||
obj = PoiElUtil.eval("'6' == '6' ? 'jueyue' : '小明'", map); | |||||
Assert.assertEquals(obj, "jueyue"); | |||||
obj = PoiElUtil.eval("le:(jueyue) == '6' ? 'jueyue' : '小明'", map); | |||||
Assert.assertEquals(obj, "jueyue"); | |||||
obj = PoiElUtil.eval("'6' == le:(jueyue) ? 'jueyue' : '小明'", map); | |||||
Assert.assertEquals(obj, "jueyue"); | |||||
obj = PoiElUtil.eval("'6' == le:(jueyue) ? fd:(date;yyyy-MM-dd) : '小明'", map); | |||||
Assert.assertEquals(obj, "2015-04-25"); | |||||
obj = PoiElUtil.eval("'6' != le:(jueyue) ? '小明' : fd:(date;yyyy-MM-dd)", map); | |||||
Assert.assertEquals(obj, "2015-04-25"); | |||||
obj = PoiElUtil.eval("jueyue == 'jueyue' ? key1 : '小明'", map); | |||||
Assert.assertEquals(obj, "测试1"); | |||||
map.put("key1", "100"); | |||||
map.put("key2", "200"); | |||||
obj = PoiElUtil.eval("key1 == key2 ? key1 : '小明'", map); | |||||
Assert.assertEquals(obj, "小明"); | |||||
obj = PoiElUtil.eval("key1 < key2 ? key1 : '小明'", map); | |||||
Assert.assertEquals(obj, "100"); | |||||
obj = PoiElUtil.eval("key2 > key1 ? key1 : '小明'", map); | |||||
Assert.assertEquals(obj, "100"); | |||||
map.put("key1", "你好"); | |||||
obj = PoiElUtil.eval("key1 == '你好' ? '不好' : '小明'", map); | |||||
Assert.assertEquals(obj, "不好"); | |||||
} | |||||
} |