Selaa lähdekoodia

搞定了表达式的基础部分

4.1.3.A
jueyue 9 vuotta sitten
vanhempi
commit
fac588015a
20 muutettua tiedostoa jossa 555 lisäystä ja 70 poistoa
  1. +11
    -6
      easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoade.java
  2. +3
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java
  3. +4
    -1
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtil.java
  4. +2
    -2
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java
  5. +3
    -3
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java
  6. +8
    -8
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java
  7. +5
    -5
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java
  8. +3
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java
  9. +9
    -9
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java
  10. +13
    -13
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/base/ImportBaseService.java
  11. +5
    -5
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/parse/SaxRowRead.java
  12. +218
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiElUtil.java
  13. +147
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiFunctionUtil.java
  14. +5
    -5
      easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiPublicUtil.java
  15. +4
    -4
      easypoi-base/src/main/java/org/jeecgframework/poi/word/WordExportUtil.java
  16. +4
    -4
      easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/ParseWord07.java
  17. +2
    -2
      easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/excel/ExcelEntityParse.java
  18. +3
    -3
      easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/excel/ExcelMapParse.java
  19. +3
    -0
      easypoi-test/src/main/java/org/jeecgframework/poi/test/UtilTest.java
  20. +103
    -0
      easypoi-test/src/main/java/org/jeecgframework/poi/util/PoiElUtilTest.java

+ 11
- 6
easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoade.java Näytä tiedosto

@@ -5,7 +5,7 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.jeecgframework.poi.util.POIPublicUtil;
import org.jeecgframework.poi.util.PoiPublicUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -23,8 +23,13 @@ class FileLoade {
FileInputStream fileis = null;
ByteArrayOutputStream baos = null;
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();
byte[] buffer = new byte[1024];
int len;
@@ -34,9 +39,9 @@ class FileLoade {
baos.flush();
return baos.toByteArray();
} catch (FileNotFoundException e) {
LOGGER.error(e.getMessage(),e);
LOGGER.error(e.getMessage(), e);
} catch (IOException e) {
LOGGER.error(e.getMessage(),e);
LOGGER.error(e.getMessage(), e);
} finally {
try {
if (fileis != null)
@@ -44,7 +49,7 @@ class FileLoade {
if (fileis != null)
baos.close();
} catch (IOException e) {
LOGGER.error(e.getMessage(),e);
LOGGER.error(e.getMessage(), e);
}
}
LOGGER.error(fileis + "这个路径文件没有找到,请查询");


+ 3
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java Näytä tiedosto

@@ -24,6 +24,9 @@ import org.jeecgframework.poi.excel.export.template.ExcelExportOfTemplateUtil;
*/
public final class ExcelExportUtil {
private ExcelExportUtil() {
}
/**
* @param entity
* 表格标题属性


+ 4
- 1
easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtil.java Näytä tiedosto

@@ -23,7 +23,10 @@ import org.slf4j.LoggerFactory;
* @version 1.0
*/
@SuppressWarnings({ "unchecked" })
public class ExcelImportUtil {
public final class ExcelImportUtil {
private ExcelImportUtil() {
}
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelImportUtil.class);


+ 2
- 2
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java Näytä tiedosto

@@ -23,7 +23,7 @@ import org.jeecgframework.poi.excel.export.base.ExcelExportBase;
import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler;
import org.jeecgframework.poi.exception.excel.ExcelExportException;
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.LoggerFactory;
@@ -120,7 +120,7 @@ public class ExcelExportServer extends ExcelExportBase {
excelParams.add(indexExcelEntity(entity));
}
// 得到所有字段
Field fileds[] = POIPublicUtil.getClassFields(pojoClass);
Field fileds[] = PoiPublicUtil.getClassFields(pojoClass);
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class);
String targetId = etarget == null ? null : etarget.value();
getAllExcelField(entity.getExclusions(), targetId, fileds, excelParams, pojoClass, null);


+ 3
- 3
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java Näytä tiedosto

@@ -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.vo.PoiBaseConstants;
import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler;
import org.jeecgframework.poi.util.POIPublicUtil;
import org.jeecgframework.poi.util.PoiPublicUtil;
/**
* 提供POI基础操作服务
@@ -164,7 +164,7 @@ public abstract class ExcelExportBase extends ExportBase {
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg;
try {
String path = POIPublicUtil.getWebRootPath(imagePath);
String path = PoiPublicUtil.getWebRootPath(imagePath);
path = path.replace("WEB-INF/classes/", "");
path = path.replace("file:/", "");
bufferImg = ImageIO.read(new File(path));
@@ -346,7 +346,7 @@ public abstract class ExcelExportBase extends ExportBase {
* @date 2013年11月25日
*/
public int getImageType(byte[] value) {
String type = POIPublicUtil.getFileExtendName(value);
String type = PoiPublicUtil.getFileExtendName(value);
if (type.equalsIgnoreCase("JPG")) {
return Workbook.PICTURE_TYPE_JPEG;
} else if (type.equalsIgnoreCase("PNG")) {


+ 8
- 8
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java Näytä tiedosto

@@ -18,7 +18,7 @@ import org.jeecgframework.poi.excel.annotation.ExcelCollection;
import org.jeecgframework.poi.excel.annotation.ExcelEntity;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jeecgframework.poi.handler.inter.IExcelDataHandler;
import org.jeecgframework.poi.util.POIPublicUtil;
import org.jeecgframework.poi.util.PoiPublicUtil;
/**
* 导出基础处理,不设计POI,只设计对象,保证复用性
@@ -91,23 +91,23 @@ public class ExportBase {
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
// 先判断是不是collection,在判断是不是java自带对象,之后就是我们自己的对象了
if (POIPublicUtil.isNotUserExcelUserThis(exclusionsList, field, targetId)) {
if (PoiPublicUtil.isNotUserExcelUserThis(exclusionsList, field, targetId)) {
continue;
}
// 首先判断Excel 可能一下特殊数据用户回自定义处理
if (field.getAnnotation(Excel.class) != null) {
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);
ParameterizedType pt = (ParameterizedType) field.getGenericType();
Class<?> clz = (Class<?>) pt.getActualTypeArguments()[0];
List<ExcelExportEntity> list = new ArrayList<ExcelExportEntity>();
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.setName(getExcelName(excel.name(), targetId));
excelEntity.setOrderNum(getCellOrder(excel.orderNum(), targetId));
excelEntity.setMethod(POIPublicUtil.getMethod(field.getName(), pojoClass));
excelEntity.setMethod(PoiPublicUtil.getMethod(field.getName(), pojoClass));
excelEntity.setList(list);
excelParams.add(excelEntity);
} else {
@@ -115,10 +115,10 @@ public class ExportBase {
if (getMethods != null) {
newMethods.addAll(getMethods);
}
newMethods.add(POIPublicUtil.getMethod(field.getName(), pojoClass));
newMethods.add(PoiPublicUtil.getMethod(field.getName(), pojoClass));
ExcelEntity excel = field.getAnnotation(ExcelEntity.class);
getAllExcelField(exclusions, StringUtils.isNotEmpty(excel.id()) ? excel.id()
: targetId, POIPublicUtil.getClassFields(field.getType()), excelParams,
: targetId, PoiPublicUtil.getClassFields(field.getType()), excelParams,
field.getType(), newMethods);
}
}
@@ -222,7 +222,7 @@ public class ExportBase {
: excel.format());
excelEntity.setStatistics(excel.isStatistics());
String fieldname = field.getName();
excelEntity.setMethod(POIPublicUtil.getMethod(fieldname, pojoClass));
excelEntity.setMethod(PoiPublicUtil.getMethod(fieldname, pojoClass));
}
/**


+ 5
- 5
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java Näytä tiedosto

@@ -27,7 +27,7 @@ import org.jeecgframework.poi.excel.export.base.ExcelExportBase;
import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler;
import org.jeecgframework.poi.exception.excel.ExcelExportException;
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.LoggerFactory;
@@ -70,7 +70,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
Map<String, Integer> titlemap = getTitleMap(params, sheet);
Drawing patriarch = sheet.createDrawingPatriarch();
// 得到所有字段
Field[] fileds = POIPublicUtil.getClassFields(pojoClass);
Field[] fileds = PoiPublicUtil.getClassFields(pojoClass);
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class);
String targetId = null;
if (etarget != null) {
@@ -201,7 +201,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
if (params.indexOf(".") != -1) {
String[] paramsArr = params.split("\\.");
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() : "";
}
@@ -257,7 +257,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
*/
private void setValueForCellByMap(Cell cell, Map<String, Object> map) throws Exception {
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;
}
String oldString;
@@ -340,7 +340,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
row.createCell(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));
row.getCell(i + columnIndex).setCellValue(val);
tempCreateCellSet.add(row.getRowNum() + "_" + (i + columnIndex));


+ 3
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java Näytä tiedosto

@@ -153,6 +153,9 @@ public class CellValueServer {
if (xclass.equals("class java.lang.Long") || xclass.equals("long")) {
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")) {
return Integer.valueOf(String.valueOf(result));
}


+ 9
- 9
easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java Näytä tiedosto

@@ -39,7 +39,7 @@ import org.jeecgframework.poi.excel.imports.base.ImportBaseService;
import org.jeecgframework.poi.excel.imports.verifys.VerifyHandlerServer;
import org.jeecgframework.poi.exception.excel.ExcelImportException;
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.LoggerFactory;
@@ -85,9 +85,9 @@ public class ExcelImportServer extends ImportBaseService {
Map<Integer, String> titlemap, String targetId,
Map<String, PictureData> pictures, 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 entity = POIPublicUtil.createObject(param.getType(), targetId);
Object entity = PoiPublicUtil.createObject(param.getType(), targetId);
String picId;
boolean isUsed = false;// 是否需要加上这个对象
for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) {
@@ -159,7 +159,7 @@ public class ExcelImportServer extends ImportBaseService {
List collection = new ArrayList();
Map<String, ExcelImportEntity> excelParams = new HashMap<String, ExcelImportEntity>();
List<ExcelCollectionParams> excelCollection = new ArrayList<ExcelCollectionParams>();
Field fileds[] = POIPublicUtil.getClassFields(pojoClass);
Field fileds[] = PoiPublicUtil.getClassFields(pojoClass);
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class);
String targetId = null;
if (etarget != null) {
@@ -197,7 +197,7 @@ public class ExcelImportServer extends ImportBaseService {
addListContinue(object, param, row, titlemap, targetId, pictures, params);
}
} else {
object = POIPublicUtil.createObject(pojoClass, targetId);
object = PoiPublicUtil.createObject(pojoClass, targetId);
try {
for (int i = row.getFirstCellNum(), le = row.getLastCellNum(); i < le; 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());
}
if (isXSSFWorkbook) {
pictures = POIPublicUtil.getSheetPictrues07((XSSFSheet) book.getSheetAt(i),
pictures = PoiPublicUtil.getSheetPictrues07((XSSFSheet) book.getSheetAt(i),
(XSSFWorkbook) book);
} else {
pictures = POIPublicUtil.getSheetPictrues03((HSSFSheet) book.getSheetAt(i),
pictures = PoiPublicUtil.getSheetPictrues03((HSSFSheet) book.getSheetAt(i),
(HSSFWorkbook) book);
}
if (LOGGER.isDebugEnabled()) {
@@ -328,9 +328,9 @@ public class ExcelImportServer extends ImportBaseService {
PictureData image = pictures.get(picId);
byte[] data = image.getData();
String fileName = "pic" + Math.round(Math.random() * 100000000000L);
fileName += "." + POIPublicUtil.getFileExtendName(data);
fileName += "." + PoiPublicUtil.getFileExtendName(data);
if (excelParams.get(titleString).getSaveType() == 1) {
String path = POIPublicUtil.getWebRootPath(getSaveUrl(excelParams.get(titleString),
String path = PoiPublicUtil.getWebRootPath(getSaveUrl(excelParams.get(titleString),
object));
File savefile = new File(path);
if (!savefile.exists()) {


+ 13
- 13
easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/base/ImportBaseService.java Näytä tiedosto

@@ -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.ExcelImportEntity;
import org.jeecgframework.poi.excel.entity.params.ExcelVerifyEntity;
import org.jeecgframework.poi.util.POIPublicUtil;
import org.jeecgframework.poi.util.PoiPublicUtil;
/**
* 导入基础和,普通方法和Sax共用
@@ -104,10 +104,10 @@ public class ImportBaseService {
ExcelImportEntity excelEntity = null;
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
if (POIPublicUtil.isNotUserExcelUserThis(null, field, targetId)) {
if (PoiPublicUtil.isNotUserExcelUserThis(null, field, targetId)) {
continue;
}
if (POIPublicUtil.isCollection(field.getType())) {
if (PoiPublicUtil.isCollection(field.getType())) {
// 集合对象设置属性
ExcelCollectionParams collection = new ExcelCollectionParams();
collection.setName(field.getName());
@@ -115,18 +115,18 @@ public class ImportBaseService {
ParameterizedType pt = (ParameterizedType) field.getGenericType();
Class<?> clz = (Class<?>) pt.getActualTypeArguments()[0];
collection.setType(clz);
getExcelFieldList(targetId, POIPublicUtil.getClassFields(clz), clz, temp, null);
getExcelFieldList(targetId, PoiPublicUtil.getClassFields(clz), clz, temp, null);
collection.setExcelParams(temp);
excelCollection.add(collection);
} else if (POIPublicUtil.isJavaClass(field)) {
} else if (PoiPublicUtil.isJavaClass(field)) {
addEntityToMap(targetId, field, excelEntity, pojoClass, getMethods, excelParams);
} else {
List<Method> newMethods = new ArrayList<Method>();
if (getMethods != null) {
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);
}
}
@@ -136,7 +136,7 @@ public class ImportBaseService {
Excel excel, Class<?> pojoClass) throws Exception {
excelEntity.setName(getExcelName(excel.name(), targetId));
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())) {
excelEntity.setFormat(excel.format());
} else {
@@ -150,10 +150,10 @@ public class ImportBaseService {
ExcelImportEntity excelEntity = null;
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
if (POIPublicUtil.isNotUserExcelUserThis(null, field, targetId)) {
if (PoiPublicUtil.isNotUserExcelUserThis(null, field, targetId)) {
continue;
}
if (POIPublicUtil.isJavaClass(field)) {
if (PoiPublicUtil.isJavaClass(field)) {
addEntityToMap(targetId, field, excelEntity, pojoClass, getMethods, temp);
} else {
List<Method> newMethods = new ArrayList<Method>();
@@ -161,8 +161,8 @@ public class ImportBaseService {
newMethods.addAll(getMethods);
}
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);
}
}
@@ -199,7 +199,7 @@ public class ImportBaseService {
public void saveThisExcel(ImportParams params, Class<?> pojoClass, boolean isXSSFWorkbook,
Workbook book) throws Exception {
String path = POIPublicUtil.getWebRootPath(getSaveExcelUrl(params, pojoClass));
String path = PoiPublicUtil.getWebRootPath(getSaveExcelUrl(params, pojoClass));
File savefile = new File(path);
if (!savefile.exists()) {
savefile.mkdirs();


+ 5
- 5
easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/parse/SaxRowRead.java Näytä tiedosto

@@ -17,7 +17,7 @@ import org.jeecgframework.poi.excel.imports.CellValueServer;
import org.jeecgframework.poi.excel.imports.base.ImportBaseService;
import org.jeecgframework.poi.exception.excel.ExcelImportException;
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.LoggerFactory;
@@ -67,7 +67,7 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead {
private void initParams(Class<?> pojoClass, ImportParams params) {
try {
Field fileds[] = POIPublicUtil.getClassFields(pojoClass);
Field fileds[] = PoiPublicUtil.getClassFields(pojoClass);
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class);
if (etarget != null) {
targetId = etarget.value();
@@ -122,7 +122,7 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead {
if (object != null && hanlder != null) {
hanlder.hanlder(object);
}
object = POIPublicUtil.createObject(pojoClass, targetId);
object = PoiPublicUtil.createObject(pojoClass, targetId);
SaxReadCellEntity entity;
for (int i = 0, le = datas.size(); i < le; i++) {
entity = datas.get(i);
@@ -155,9 +155,9 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead {
private void addListContinue(Object object, ExcelCollectionParams param,
List<SaxReadCellEntity> datas, Map<Integer, String> titlemap,
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 entity = POIPublicUtil.createObject(param.getType(), targetId);
Object entity = PoiPublicUtil.createObject(param.getType(), targetId);
boolean isUsed = false;// 是否需要加上这个对象
for (int i = 0; i < datas.size(); i++) {
String titleString = (String) titlemap.get(i);


+ 218
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiElUtil.java Näytä tiedosto

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

+ 147
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiFunctionUtil.java Näytä tiedosto

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

easypoi-base/src/main/java/org/jeecgframework/poi/util/POIPublicUtil.java → easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiPublicUtil.java Näytä tiedosto

@@ -42,9 +42,9 @@ import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
* @author JueYue
* @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) {
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("file:/", "");
return path + filePath;
@@ -349,7 +349,7 @@ public final class POIPublicUtil {
type = entity.getUrl().split("/.")[entity.getUrl().split("/.").length - 1];
} else {
result[0] = entity.getData();
type = POIPublicUtil.getFileExtendName(entity.getData());
type = PoiPublicUtil.getFileExtendName(entity.getData());
}
result[1] = getImageType(type);
return result;
@@ -362,7 +362,7 @@ public final class POIPublicUtil {
* @param map
* @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) {
String[] paramsArr = params.split("\\.");
return getValueDoWhile(map.get(paramsArr[0]), paramsArr, 1);

+ 4
- 4
easypoi-base/src/main/java/org/jeecgframework/poi/word/WordExportUtil.java Näytä tiedosto

@@ -12,10 +12,10 @@ import org.jeecgframework.poi.word.parse.ParseWord07;
* @date 2013-11-16
* @version 1.0
*/
public class WordExportUtil {
private WordExportUtil(){
public final class WordExportUtil {
private WordExportUtil() {
}
/**


+ 4
- 4
easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/ParseWord07.java Näytä tiedosto

@@ -14,7 +14,7 @@ import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
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.WordImageEntity;
import org.jeecgframework.poi.word.entity.params.ExcelListEntity;
@@ -45,7 +45,7 @@ public class ParseWord07 {
* @throws Exception
*/
private void addAnImage(WordImageEntity obj, XWPFRun currentRun) throws Exception {
Object[] isAndType = POIPublicUtil.getIsAndType(obj);
Object[] isAndType = PoiPublicUtil.getIsAndType(obj);
String picId;
try {
picId = currentRun.getParagraph().getDocument()
@@ -70,7 +70,7 @@ public class ParseWord07 {
*/
private void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText,
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) {// 如果是图片就设置为图片
currentRun.setText("", 0);
addAnImage((WordImageEntity) obj, currentRun);
@@ -97,7 +97,7 @@ public class ParseWord07 {
String text = cell.getText().trim();
// 判断是不是迭代输出
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;
}


+ 2
- 2
easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/excel/ExcelEntityParse.java Näytä tiedosto

@@ -17,7 +17,7 @@ import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jeecgframework.poi.excel.export.base.ExportBase;
import org.jeecgframework.poi.exception.word.WordExportException;
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;
/**
@@ -139,7 +139,7 @@ public class ExcelEntityParse extends ExportBase {
Map<String, Integer> titlemap = getTitleMap(table, index, entity.getHeadRows());
try {
// 得到所有字段
Field fileds[] = POIPublicUtil.getClassFields(entity.getClazz());
Field fileds[] = PoiPublicUtil.getClassFields(entity.getClazz());
ExcelTarget etarget = entity.getClazz().getAnnotation(ExcelTarget.class);
String targetId = null;
if (etarget != null) {


+ 3
- 3
easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/excel/ExcelMapParse.java Näytä tiedosto

@@ -5,7 +5,7 @@ import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.jeecgframework.poi.util.POIPublicUtil;
import org.jeecgframework.poi.util.PoiPublicUtil;
/**
* 处理和生成Map 类型的数据变成表格
@@ -54,12 +54,12 @@ public final class ExcelMapParse {
.getTableCells()
.get(cellIndex)
.setText(
POIPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0)
PoiPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0)
.toString());
}
for (; cellIndex < params.length; cellIndex++) {
currentRow.createCell().setText(
POIPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0)
PoiPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0)
.toString());
}
}


+ 3
- 0
easypoi-test/src/main/java/org/jeecgframework/poi/test/UtilTest.java Näytä tiedosto

@@ -7,6 +7,9 @@ public class UtilTest {
text = text.replace("{{", "").replace("}}", "").replaceAll("\\s{1,}", " ").trim();
System.out.println(text);
System.out.println(text.length());
}
}

+ 103
- 0
easypoi-test/src/main/java/org/jeecgframework/poi/util/PoiElUtilTest.java Näytä tiedosto

@@ -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, "不好");
}
}

Ladataan…
Peruuta
Tallenna