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