| @@ -0,0 +1,35 @@ | |||||
| package org.jeecgframework.poi.cache; | |||||
| import java.io.IOException; | |||||
| import java.io.InputStream; | |||||
| import org.jeecgframework.poi.cache.manager.POICacheManager; | |||||
| import org.jeecgframework.poi.word.entity.JeecgXWPFDocument; | |||||
| /** | |||||
| * word 缓存中心 | |||||
| * | |||||
| * @author JueYue | |||||
| * @date 2014年7月24日 下午10:54:31 | |||||
| */ | |||||
| public class WordCache { | |||||
| public static JeecgXWPFDocument getXWPFDocumen(String url) { | |||||
| InputStream is = null; | |||||
| try { | |||||
| is = POICacheManager.getFile(url); | |||||
| JeecgXWPFDocument doc = new JeecgXWPFDocument(is); | |||||
| return doc; | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } finally { | |||||
| try { | |||||
| is.close(); | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| } | |||||
| @@ -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.ExcelPublicUtil; | |||||
| import org.jeecgframework.poi.util.POIPublicUtil; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -23,7 +23,7 @@ class FileLoade { | |||||
| FileInputStream fileis = null; | FileInputStream fileis = null; | ||||
| ByteArrayOutputStream baos = null; | ByteArrayOutputStream baos = null; | ||||
| try { | try { | ||||
| String path = ExcelPublicUtil.getWebRootPath(url); | |||||
| String path = POIPublicUtil.getWebRootPath(url); | |||||
| fileis = new FileInputStream(path); | fileis = new FileInputStream(path); | ||||
| baos = new ByteArrayOutputStream(); | baos = new ByteArrayOutputStream(); | ||||
| byte[] buffer = new byte[1024]; | byte[] buffer = new byte[1024]; | ||||
| @@ -40,7 +40,7 @@ import org.jeecgframework.poi.excel.entity.params.ComparatorExcelField; | |||||
| import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | 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.handler.inter.IExcelDataHandler; | import org.jeecgframework.poi.handler.inter.IExcelDataHandler; | ||||
| import org.jeecgframework.poi.util.ExcelPublicUtil; | |||||
| import org.jeecgframework.poi.util.POIPublicUtil; | |||||
| /** | /** | ||||
| * 导出基础服务 | * 导出基础服务 | ||||
| @@ -73,11 +73,11 @@ public abstract class ExcelExportBase { | |||||
| 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 (ExcelPublicUtil.isNotUserExcelUserThis(exclusionsList, field, | |||||
| if (POIPublicUtil.isNotUserExcelUserThis(exclusionsList, field, | |||||
| targetId)) { | targetId)) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| if (ExcelPublicUtil.isCollection(field.getType())) { | |||||
| if (POIPublicUtil.isCollection(field.getType())) { | |||||
| ExcelCollection excel = field | ExcelCollection excel = field | ||||
| .getAnnotation(ExcelCollection.class); | .getAnnotation(ExcelCollection.class); | ||||
| ParameterizedType pt = (ParameterizedType) field | ParameterizedType pt = (ParameterizedType) field | ||||
| @@ -87,16 +87,16 @@ public abstract class ExcelExportBase { | |||||
| getAllExcelField(exclusions, | getAllExcelField(exclusions, | ||||
| StringUtils.isNotEmpty(excel.id()) ? excel.id() | StringUtils.isNotEmpty(excel.id()) ? excel.id() | ||||
| : targetId, | : targetId, | ||||
| ExcelPublicUtil.getClassFields(clz), list, clz, null); | |||||
| 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 | excelEntity | ||||
| .setOrderNum(getCellOrder(excel.orderNum(), targetId)); | .setOrderNum(getCellOrder(excel.orderNum(), targetId)); | ||||
| excelEntity.setMethod(ExcelPublicUtil.getMethod( | |||||
| excelEntity.setMethod(POIPublicUtil.getMethod( | |||||
| field.getName(), pojoClass)); | field.getName(), pojoClass)); | ||||
| excelEntity.setList(list); | excelEntity.setList(list); | ||||
| excelParams.add(excelEntity); | excelParams.add(excelEntity); | ||||
| } else if (ExcelPublicUtil.isJavaClass(field)) { | |||||
| } else if (POIPublicUtil.isJavaClass(field)) { | |||||
| excelParams.add(createExcelExportEntity(field, targetId, | excelParams.add(createExcelExportEntity(field, targetId, | ||||
| pojoClass, getMethods)); | pojoClass, getMethods)); | ||||
| } else { | } else { | ||||
| @@ -104,13 +104,13 @@ public abstract class ExcelExportBase { | |||||
| if (getMethods != null) { | if (getMethods != null) { | ||||
| newMethods.addAll(getMethods); | newMethods.addAll(getMethods); | ||||
| } | } | ||||
| newMethods.add(ExcelPublicUtil.getMethod(field.getName(), | |||||
| newMethods.add(POIPublicUtil.getMethod(field.getName(), | |||||
| pojoClass)); | pojoClass)); | ||||
| ExcelEntity excel = field.getAnnotation(ExcelEntity.class); | ExcelEntity excel = field.getAnnotation(ExcelEntity.class); | ||||
| getAllExcelField(exclusions, | getAllExcelField(exclusions, | ||||
| StringUtils.isNotEmpty(excel.id()) ? excel.id() | StringUtils.isNotEmpty(excel.id()) ? excel.id() | ||||
| : targetId, | : targetId, | ||||
| ExcelPublicUtil.getClassFields(field.getType()), | |||||
| POIPublicUtil.getClassFields(field.getType()), | |||||
| excelParams, field.getType(), newMethods); | excelParams, field.getType(), newMethods); | ||||
| } | } | ||||
| } | } | ||||
| @@ -224,7 +224,7 @@ public abstract class ExcelExportBase { | |||||
| .setFormat(StringUtils.isNotEmpty(excel.exportFormat()) ? excel | .setFormat(StringUtils.isNotEmpty(excel.exportFormat()) ? excel | ||||
| .exportFormat() : excel.format()); | .exportFormat() : excel.format()); | ||||
| String fieldname = field.getName(); | String fieldname = field.getName(); | ||||
| excelEntity.setMethod(ExcelPublicUtil.getMethod(fieldname, pojoClass)); | |||||
| excelEntity.setMethod(POIPublicUtil.getMethod(fieldname, pojoClass)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -650,7 +650,7 @@ public abstract class ExcelExportBase { | |||||
| ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); | ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); | ||||
| BufferedImage bufferImg; | BufferedImage bufferImg; | ||||
| try { | try { | ||||
| String path = ExcelPublicUtil.getWebRootPath(string); | |||||
| String path = POIPublicUtil.getWebRootPath(string); | |||||
| 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)); | ||||
| @@ -685,7 +685,7 @@ public abstract class ExcelExportBase { | |||||
| * @date 2013年11月25日 | * @date 2013年11月25日 | ||||
| */ | */ | ||||
| public int getImageType(byte[] value) { | public int getImageType(byte[] value) { | ||||
| String type = ExcelPublicUtil.getFileExtendName(value); | |||||
| String type = POIPublicUtil.getFileExtendName(value); | |||||
| if (type.equalsIgnoreCase("JPG")) { | if (type.equalsIgnoreCase("JPG")) { | ||||
| return HSSFWorkbook.PICTURE_TYPE_JPEG; | return HSSFWorkbook.PICTURE_TYPE_JPEG; | ||||
| } else if (type.equalsIgnoreCase("PNG")) { | } else if (type.equalsIgnoreCase("PNG")) { | ||||
| @@ -24,7 +24,7 @@ import org.jeecgframework.poi.excel.entity.ExportParams; | |||||
| import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | ||||
| 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.ExcelPublicUtil; | |||||
| import org.jeecgframework.poi.util.POIPublicUtil; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -71,7 +71,7 @@ public class ExcelExportServer extends ExcelExportBase { | |||||
| Drawing patriarch = sheet.createDrawingPatriarch(); | Drawing patriarch = sheet.createDrawingPatriarch(); | ||||
| List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>(); | List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>(); | ||||
| // 得到所有字段 | // 得到所有字段 | ||||
| Field fileds[] = ExcelPublicUtil.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, | getAllExcelField(entity.getExclusions(), targetId, fileds, | ||||
| @@ -22,7 +22,7 @@ import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | |||||
| import org.jeecgframework.poi.excel.export.ExcelExportBase; | import org.jeecgframework.poi.excel.export.ExcelExportBase; | ||||
| 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.ExcelPublicUtil; | |||||
| import org.jeecgframework.poi.util.POIPublicUtil; | |||||
| /** | /** | ||||
| * Excel 导出根据模板导出 | * Excel 导出根据模板导出 | ||||
| @@ -101,7 +101,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[] = ExcelPublicUtil.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) { | ||||
| @@ -258,7 +258,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||||
| if (object instanceof Map) { | if (object instanceof Map) { | ||||
| object = ((Map) object).get(paramsArr[index]); | object = ((Map) object).get(paramsArr[index]); | ||||
| } else { | } else { | ||||
| object = ExcelPublicUtil.getMethod(paramsArr[index], | |||||
| object = POIPublicUtil.getMethod(paramsArr[index], | |||||
| object.getClass()).invoke(object, new Object[] {}); | object.getClass()).invoke(object, new Object[] {}); | ||||
| } | } | ||||
| return (index == paramsArr.length - 1) ? (object == null ? "" : object | return (index == paramsArr.length - 1) ? (object == null ? "" : object | ||||
| @@ -40,7 +40,7 @@ import org.jeecgframework.poi.excel.entity.params.ExcelVerifyEntity; | |||||
| import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; | import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; | ||||
| import org.jeecgframework.poi.excel.entity.result.ExcelVerifyHanlderResult; | import org.jeecgframework.poi.excel.entity.result.ExcelVerifyHanlderResult; | ||||
| import org.jeecgframework.poi.excel.imports.verifys.VerifyHandlerServer; | import org.jeecgframework.poi.excel.imports.verifys.VerifyHandlerServer; | ||||
| import org.jeecgframework.poi.util.ExcelPublicUtil; | |||||
| import org.jeecgframework.poi.util.POIPublicUtil; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -95,10 +95,10 @@ public class ExcelImportServer { | |||||
| Map<String, PictureData> pictures; | Map<String, PictureData> pictures; | ||||
| for (int i = 0; i < params.getSheetNum(); i++) { | for (int i = 0; i < params.getSheetNum(); i++) { | ||||
| if (isXSSFWorkbook) { | if (isXSSFWorkbook) { | ||||
| pictures = ExcelPublicUtil.getSheetPictrues07( | |||||
| pictures = POIPublicUtil.getSheetPictrues07( | |||||
| (XSSFSheet) book.getSheetAt(i), (XSSFWorkbook) book); | (XSSFSheet) book.getSheetAt(i), (XSSFWorkbook) book); | ||||
| } else { | } else { | ||||
| pictures = ExcelPublicUtil.getSheetPictrues03( | |||||
| pictures = POIPublicUtil.getSheetPictrues03( | |||||
| (HSSFSheet) book.getSheetAt(i), (HSSFWorkbook) book); | (HSSFSheet) book.getSheetAt(i), (HSSFWorkbook) book); | ||||
| } | } | ||||
| result.addAll(importExcel(result, book.getSheetAt(i), pojoClass, | result.addAll(importExcel(result, book.getSheetAt(i), pojoClass, | ||||
| @@ -112,7 +112,7 @@ public class ExcelImportServer { | |||||
| private void saveThisExcel(ImportParams params, Class<?> pojoClass, | private void saveThisExcel(ImportParams params, Class<?> pojoClass, | ||||
| boolean isXSSFWorkbook, Workbook book) throws Exception { | boolean isXSSFWorkbook, Workbook book) throws Exception { | ||||
| String path = ExcelPublicUtil.getWebRootPath(getSaveExcelUrl(params, | |||||
| String path = POIPublicUtil.getWebRootPath(getSaveExcelUrl(params, | |||||
| pojoClass)); | pojoClass)); | ||||
| File savefile = new File(path); | File savefile = new File(path); | ||||
| if (!savefile.exists()) { | if (!savefile.exists()) { | ||||
| @@ -153,7 +153,7 @@ public class ExcelImportServer { | |||||
| 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[] = ExcelPublicUtil.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) { | ||||
| @@ -194,7 +194,7 @@ public class ExcelImportServer { | |||||
| pictures, params); | pictures, params); | ||||
| } | } | ||||
| } else { | } else { | ||||
| object = ExcelPublicUtil.createObject(pojoClass, targetId); | |||||
| object = POIPublicUtil.createObject(pojoClass, targetId); | |||||
| 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); | ||||
| String titleString = (String) titlemap.get(i); | String titleString = (String) titlemap.get(i); | ||||
| @@ -293,9 +293,9 @@ public class ExcelImportServer { | |||||
| 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 += "." + ExcelPublicUtil.getFileExtendName(data); | |||||
| fileName += "." + POIPublicUtil.getFileExtendName(data); | |||||
| if (excelParams.get(titleString).getSaveType() == 1) { | if (excelParams.get(titleString).getSaveType() == 1) { | ||||
| String path = ExcelPublicUtil.getWebRootPath(getSaveUrl( | |||||
| String path = POIPublicUtil.getWebRootPath(getSaveUrl( | |||||
| excelParams.get(titleString), object)); | excelParams.get(titleString), object)); | ||||
| File savefile = new File(path); | File savefile = new File(path); | ||||
| if (!savefile.exists()) { | if (!savefile.exists()) { | ||||
| @@ -354,10 +354,10 @@ public class ExcelImportServer { | |||||
| Row row, Map<Integer, String> titlemap, String targetId, | Row row, 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) ExcelPublicUtil.getMethod( | |||||
| Collection collection = (Collection) POIPublicUtil.getMethod( | |||||
| param.getName(), object.getClass()).invoke(object, | param.getName(), object.getClass()).invoke(object, | ||||
| new Object[] {}); | new Object[] {}); | ||||
| Object entity = ExcelPublicUtil.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++) { | ||||
| @@ -436,10 +436,10 @@ public class ExcelImportServer { | |||||
| 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 (ExcelPublicUtil.isNotUserExcelUserThis(null, field, targetId)) { | |||||
| if (POIPublicUtil.isNotUserExcelUserThis(null, field, targetId)) { | |||||
| continue; | continue; | ||||
| } | } | ||||
| if (ExcelPublicUtil.isCollection(field.getType())) { | |||||
| if (POIPublicUtil.isCollection(field.getType())) { | |||||
| // 集合对象设置属性 | // 集合对象设置属性 | ||||
| ExcelCollectionParams collection = new ExcelCollectionParams(); | ExcelCollectionParams collection = new ExcelCollectionParams(); | ||||
| collection.setName(field.getName()); | collection.setName(field.getName()); | ||||
| @@ -449,10 +449,10 @@ public class ExcelImportServer { | |||||
| Class<?> clz = (Class<?>) pt.getActualTypeArguments()[0]; | Class<?> clz = (Class<?>) pt.getActualTypeArguments()[0]; | ||||
| collection.setType(clz); | collection.setType(clz); | ||||
| getExcelFieldList(targetId, | getExcelFieldList(targetId, | ||||
| ExcelPublicUtil.getClassFields(clz), clz, temp, null); | |||||
| POIPublicUtil.getClassFields(clz), clz, temp, null); | |||||
| collection.setExcelParams(temp); | collection.setExcelParams(temp); | ||||
| excelCollection.add(collection); | excelCollection.add(collection); | ||||
| } else if (ExcelPublicUtil.isJavaClass(field)) { | |||||
| } else if (POIPublicUtil.isJavaClass(field)) { | |||||
| addEntityToMap(targetId, field, excelEntity, pojoClass, | addEntityToMap(targetId, field, excelEntity, pojoClass, | ||||
| getMethods, excelParams); | getMethods, excelParams); | ||||
| } else { | } else { | ||||
| @@ -460,10 +460,10 @@ public class ExcelImportServer { | |||||
| if (getMethods != null) { | if (getMethods != null) { | ||||
| newMethods.addAll(getMethods); | newMethods.addAll(getMethods); | ||||
| } | } | ||||
| newMethods.add(ExcelPublicUtil.getMethod(field.getName(), | |||||
| newMethods.add(POIPublicUtil.getMethod(field.getName(), | |||||
| pojoClass)); | pojoClass)); | ||||
| getAllExcelField(targetId, | getAllExcelField(targetId, | ||||
| ExcelPublicUtil.getClassFields(field.getType()), | |||||
| POIPublicUtil.getClassFields(field.getType()), | |||||
| excelParams, excelCollection, field.getType(), | excelParams, excelCollection, field.getType(), | ||||
| newMethods); | newMethods); | ||||
| } | } | ||||
| @@ -476,10 +476,10 @@ public class ExcelImportServer { | |||||
| 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 (ExcelPublicUtil.isNotUserExcelUserThis(null, field, targetId)) { | |||||
| if (POIPublicUtil.isNotUserExcelUserThis(null, field, targetId)) { | |||||
| continue; | continue; | ||||
| } | } | ||||
| if (ExcelPublicUtil.isJavaClass(field)) { | |||||
| if (POIPublicUtil.isJavaClass(field)) { | |||||
| addEntityToMap(targetId, field, excelEntity, pojoClass, | addEntityToMap(targetId, field, excelEntity, pojoClass, | ||||
| getMethods, temp); | getMethods, temp); | ||||
| } else { | } else { | ||||
| @@ -487,10 +487,10 @@ public class ExcelImportServer { | |||||
| if (getMethods != null) { | if (getMethods != null) { | ||||
| newMethods.addAll(getMethods); | newMethods.addAll(getMethods); | ||||
| } | } | ||||
| newMethods.add(ExcelPublicUtil.getMethod(field.getName(), | |||||
| newMethods.add(POIPublicUtil.getMethod(field.getName(), | |||||
| pojoClass, field.getType())); | pojoClass, field.getType())); | ||||
| getExcelFieldList(targetId, | getExcelFieldList(targetId, | ||||
| ExcelPublicUtil.getClassFields(field.getType()), | |||||
| POIPublicUtil.getClassFields(field.getType()), | |||||
| field.getType(), temp, newMethods); | field.getType(), temp, newMethods); | ||||
| } | } | ||||
| } | } | ||||
| @@ -559,7 +559,7 @@ public class ExcelImportServer { | |||||
| throws Exception { | throws Exception { | ||||
| excelEntity.setName(getExcelName(excel.name(), targetId)); | excelEntity.setName(getExcelName(excel.name(), targetId)); | ||||
| String fieldname = field.getName(); | String fieldname = field.getName(); | ||||
| excelEntity.setMethod(ExcelPublicUtil.getMethod(fieldname, pojoClass, | |||||
| excelEntity.setMethod(POIPublicUtil.getMethod(fieldname, pojoClass, | |||||
| field.getType())); | field.getType())); | ||||
| if (StringUtils.isEmpty(excel.importFormat())) { | if (StringUtils.isEmpty(excel.importFormat())) { | ||||
| excelEntity.setFormat(excel.format()); | excelEntity.setFormat(excel.format()); | ||||
| @@ -15,11 +15,11 @@ import java.lang.reflect.Field; | |||||
| import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||
| import java.util.*; | import java.util.*; | ||||
| public class ExcelPublicUtil { | |||||
| public class POIPublicUtil { | |||||
| public static String getWebRootPath(String filePath) { | public static String getWebRootPath(String filePath) { | ||||
| // 这个path还是要测试的 | // 这个path还是要测试的 | ||||
| String path = ExcelPublicUtil.class.getClassLoader().getResource("") | |||||
| String path = POIPublicUtil.class.getClassLoader().getResource("") | |||||
| .getPath() | .getPath() | ||||
| + filePath; | + filePath; | ||||
| path = path.replace("WEB-INF/classes/", ""); | path = path.replace("WEB-INF/classes/", ""); | ||||
| @@ -0,0 +1,28 @@ | |||||
| package org.jeecgframework.poi.word; | |||||
| import java.util.Map; | |||||
| import org.apache.poi.xwpf.usermodel.XWPFDocument; | |||||
| import org.jeecgframework.poi.word.parse.ParseWord07; | |||||
| /** | |||||
| * Word使用模板导出工具类 | |||||
| * @author JueYue | |||||
| * @date 2013-11-16 | |||||
| * @version 1.0 | |||||
| */ | |||||
| public class WordExportUtil { | |||||
| /** | |||||
| * 解析Word2007版本 | |||||
| *@Author JueYue | |||||
| *@date 2013-11-16 | |||||
| *@param url 模板地址 | |||||
| *@param map 解析数据源 | |||||
| *@return | |||||
| */ | |||||
| public static XWPFDocument exportWord07(String url,Map<String,Object> map) throws Exception{ | |||||
| return new ParseWord07().parseWord(url, map); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,157 @@ | |||||
| package org.jeecgframework.poi.word.entity; | |||||
| import java.io.InputStream; | |||||
| import org.apache.poi.openxml4j.opc.OPCPackage; | |||||
| import org.apache.poi.xwpf.usermodel.XWPFDocument; | |||||
| import org.apache.poi.xwpf.usermodel.XWPFRun; | |||||
| import org.apache.xmlbeans.XmlException; | |||||
| import org.apache.xmlbeans.XmlToken; | |||||
| import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps; | |||||
| import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D; | |||||
| import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline; | |||||
| /** | |||||
| * 扩充document,修复图片插入失败问题问题 | |||||
| * | |||||
| * @author JueYue | |||||
| * @date 2013-11-20 | |||||
| * @version 1.0 | |||||
| */ | |||||
| public class JeecgXWPFDocument extends XWPFDocument { | |||||
| public JeecgXWPFDocument() { | |||||
| super(); | |||||
| } | |||||
| public JeecgXWPFDocument(OPCPackage opcPackage) throws Exception { | |||||
| super(opcPackage); | |||||
| } | |||||
| public JeecgXWPFDocument(InputStream in) throws Exception { | |||||
| super(in); | |||||
| } | |||||
| public void createPicture(String blipId,int id, int width, int height) { | |||||
| final int EMU = 9525; | |||||
| width *= EMU; | |||||
| height *= EMU; | |||||
| //String blipId = getAllPictures().get(id).getPackageRelationship().getId(); | |||||
| CTInline inline = createParagraph().createRun().getCTR().addNewDrawing().addNewInline(); | |||||
| String picXml = "" + | |||||
| "<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">" + | |||||
| " <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" + | |||||
| " <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" + | |||||
| " <pic:nvPicPr>" + | |||||
| " <pic:cNvPr id=\"" + id + "\" name=\"Generated\"/>" + | |||||
| " <pic:cNvPicPr/>" + | |||||
| " </pic:nvPicPr>" + | |||||
| " <pic:blipFill>" + | |||||
| " <a:blip r:embed=\"" + blipId + "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>" + | |||||
| " <a:stretch>" + | |||||
| " <a:fillRect/>" + | |||||
| " </a:stretch>" + | |||||
| " </pic:blipFill>" + | |||||
| " <pic:spPr>" + | |||||
| " <a:xfrm>" + | |||||
| " <a:off x=\"0\" y=\"0\"/>" + | |||||
| " <a:ext cx=\"" + width + "\" cy=\"" + height + "\"/>" + | |||||
| " </a:xfrm>" + | |||||
| " <a:prstGeom prst=\"rect\">" + | |||||
| " <a:avLst/>" + | |||||
| " </a:prstGeom>" + | |||||
| " </pic:spPr>" + | |||||
| " </pic:pic>" + | |||||
| " </a:graphicData>" + | |||||
| "</a:graphic>"; | |||||
| //CTGraphicalObjectData graphicData = inline.addNewGraphic().addNewGraphicData(); | |||||
| XmlToken xmlToken = null; | |||||
| try { | |||||
| xmlToken = XmlToken.Factory.parse(picXml); | |||||
| } catch(XmlException xe) { | |||||
| xe.printStackTrace(); | |||||
| } | |||||
| inline.set(xmlToken); | |||||
| //graphicData.set(xmlToken); | |||||
| inline.setDistT(0); | |||||
| inline.setDistB(0); | |||||
| inline.setDistL(0); | |||||
| inline.setDistR(0); | |||||
| CTPositiveSize2D extent = inline.addNewExtent(); | |||||
| extent.setCx(width); | |||||
| extent.setCy(height); | |||||
| CTNonVisualDrawingProps docPr = inline.addNewDocPr(); | |||||
| docPr.setId(id); | |||||
| docPr.setName("Picture " + id); | |||||
| docPr.setDescr("Generated"); | |||||
| } | |||||
| public void createPicture(XWPFRun run,String blipId, int id, int width, int height) { | |||||
| final int EMU = 9525; | |||||
| width *= EMU; | |||||
| height *= EMU; | |||||
| CTInline inline = run.getCTR() | |||||
| .addNewDrawing().addNewInline(); | |||||
| String picXml = "" | |||||
| + "<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">" | |||||
| + " <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" | |||||
| + " <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" | |||||
| + " <pic:nvPicPr>" + " <pic:cNvPr id=\"" | |||||
| + id | |||||
| + "\" name=\"Generated\"/>" | |||||
| + " <pic:cNvPicPr/>" | |||||
| + " </pic:nvPicPr>" | |||||
| + " <pic:blipFill>" | |||||
| + " <a:blip r:embed=\"" | |||||
| + blipId | |||||
| + "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>" | |||||
| + " <a:stretch>" | |||||
| + " <a:fillRect/>" | |||||
| + " </a:stretch>" | |||||
| + " </pic:blipFill>" | |||||
| + " <pic:spPr>" | |||||
| + " <a:xfrm>" | |||||
| + " <a:off x=\"0\" y=\"0\"/>" | |||||
| + " <a:ext cx=\"" | |||||
| + width | |||||
| + "\" cy=\"" | |||||
| + height | |||||
| + "\"/>" | |||||
| + " </a:xfrm>" | |||||
| + " <a:prstGeom prst=\"rect\">" | |||||
| + " <a:avLst/>" | |||||
| + " </a:prstGeom>" | |||||
| + " </pic:spPr>" | |||||
| + " </pic:pic>" | |||||
| + " </a:graphicData>" + "</a:graphic>"; | |||||
| XmlToken xmlToken = null; | |||||
| try { | |||||
| xmlToken = XmlToken.Factory.parse(picXml); | |||||
| } catch (XmlException xe) { | |||||
| xe.printStackTrace(); | |||||
| } | |||||
| inline.set(xmlToken); | |||||
| inline.setDistT(0); | |||||
| inline.setDistB(0); | |||||
| inline.setDistL(0); | |||||
| inline.setDistR(0); | |||||
| CTPositiveSize2D extent = inline.addNewExtent(); | |||||
| extent.setCx(width); | |||||
| extent.setCy(height); | |||||
| CTNonVisualDrawingProps docPr = inline.addNewDocPr(); | |||||
| docPr.setId(id); | |||||
| docPr.setName("Picture " + id); | |||||
| docPr.setDescr("Generated"); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,67 @@ | |||||
| package org.jeecgframework.poi.word.entity; | |||||
| /** | |||||
| * word导出,图片设置和图片信息 | |||||
| * @author JueYue | |||||
| * @date 2013-11-17 | |||||
| * @version 1.0 | |||||
| */ | |||||
| public class WordImageEntity { | |||||
| public static String URL = "url"; | |||||
| public static String Data = "data"; | |||||
| /** | |||||
| * 图片输入方式 | |||||
| */ | |||||
| private String type = URL; | |||||
| /** | |||||
| * 图片宽度 | |||||
| */ | |||||
| private int width; | |||||
| //图片高度 | |||||
| private int height; | |||||
| //图片地址 | |||||
| private String url; | |||||
| //图片信息 | |||||
| private byte[] data; | |||||
| public String getType() { | |||||
| return type; | |||||
| } | |||||
| public void setType(String type) { | |||||
| this.type = type; | |||||
| } | |||||
| public int getWidth() { | |||||
| return width; | |||||
| } | |||||
| public void setWidth(int width) { | |||||
| this.width = width; | |||||
| } | |||||
| public int getHeight() { | |||||
| return height; | |||||
| } | |||||
| public void setHeight(int height) { | |||||
| this.height = height; | |||||
| } | |||||
| public String getUrl() { | |||||
| return url; | |||||
| } | |||||
| public void setUrl(String url) { | |||||
| this.url = url; | |||||
| } | |||||
| public byte[] getData() { | |||||
| return data; | |||||
| } | |||||
| public void setData(byte[] data) { | |||||
| this.data = data; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,282 @@ | |||||
| package org.jeecgframework.poi.word.parse; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Iterator; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| import org.apache.poi.xwpf.usermodel.XWPFDocument; | |||||
| import org.apache.poi.xwpf.usermodel.XWPFParagraph; | |||||
| import org.apache.poi.xwpf.usermodel.XWPFRun; | |||||
| 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.word.entity.JeecgXWPFDocument; | |||||
| import org.jeecgframework.poi.word.entity.WordImageEntity; | |||||
| import org.jeecgframework.poi.word.util.ParseWordUtil; | |||||
| /** | |||||
| * 解析07版的Word,替换文字,生成表格,生成图片 | |||||
| * | |||||
| * @author JueYue | |||||
| * @date 2013-11-16 | |||||
| * @version 1.0 | |||||
| */ | |||||
| @SuppressWarnings({"unchecked","rawtypes"}) | |||||
| public class ParseWord07 { | |||||
| /** | |||||
| * 解析07版的Word并且进行赋值 | |||||
| * | |||||
| * @Author JueYue | |||||
| * @date 2013-11-16 | |||||
| * @return | |||||
| * @throws Exception | |||||
| */ | |||||
| public XWPFDocument parseWord(String url, Map<String, Object> map) | |||||
| throws Exception { | |||||
| JeecgXWPFDocument doc = WordCache.getXWPFDocumen(url); | |||||
| parseWordSetValue(doc, map); | |||||
| return doc; | |||||
| } | |||||
| private void parseWordSetValue(JeecgXWPFDocument doc, | |||||
| Map<String, Object> map) throws Exception { | |||||
| //第一步解析文档 | |||||
| parseAllParagraphic(doc.getParagraphs(),map); | |||||
| //第二步解析所有表格 | |||||
| XWPFTable table; | |||||
| Iterator<XWPFTable> itTable = doc.getTablesIterator(); | |||||
| while (itTable.hasNext()) { | |||||
| table = itTable.next(); | |||||
| if (table.getText().indexOf("{{") != -1) { | |||||
| parseThisTable(table, map); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 解析所有的文本 | |||||
| *@Author JueYue | |||||
| *@date 2013-11-17 | |||||
| *@param paragraphs | |||||
| *@param map | |||||
| */ | |||||
| private void parseAllParagraphic(List<XWPFParagraph> paragraphs, | |||||
| Map<String, Object> map) throws Exception { | |||||
| XWPFParagraph paragraph; | |||||
| for (int i = 0; i < paragraphs.size(); i++) { | |||||
| paragraph = paragraphs.get(i); | |||||
| if (paragraph.getText().indexOf("{{") != -1) { | |||||
| parseThisParagraph(paragraph, map); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 解析这个表格 | |||||
| * | |||||
| * @Author JueYue | |||||
| * @date 2013-11-17 | |||||
| * @param table | |||||
| * @param map | |||||
| */ | |||||
| private void parseThisTable(XWPFTable table, Map<String, Object> map) throws Exception { | |||||
| XWPFTableRow row; | |||||
| List<XWPFTableCell> cells; | |||||
| Object listobj; | |||||
| for (int i = 0; i < table.getNumberOfRows(); i++) { | |||||
| row = table.getRow(i); | |||||
| cells = row.getTableCells(); | |||||
| if(cells.size() == 1){ | |||||
| listobj = checkThisTableIsNeedIterator(cells.get(0),map); | |||||
| if(listobj==null){ | |||||
| parseThisRow(cells,map); | |||||
| }else{ | |||||
| table.removeRow(i);//删除这一行 | |||||
| parseNextRowAndAddRow(table,i,(List) listobj); | |||||
| } | |||||
| }else{ | |||||
| parseThisRow(cells,map); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 解析下一行,并且生成更多的行 | |||||
| *@Author JueYue | |||||
| *@date 2013-11-18 | |||||
| *@param table | |||||
| *@param listobj2 | |||||
| */ | |||||
| private void parseNextRowAndAddRow(XWPFTable table,int index, List<Object> list) throws Exception { | |||||
| XWPFTableRow currentRow = table.getRow(index); | |||||
| String[] params = parseCurrentRowGetParams(currentRow); | |||||
| table.removeRow(index);//移除这一行 | |||||
| int cellIndex = 0;//创建完成对象一行好像多了一个cell | |||||
| for(Object obj :list){ | |||||
| currentRow = table.createRow(); | |||||
| for(cellIndex = 0;cellIndex<currentRow.getTableCells().size();cellIndex++){ | |||||
| currentRow.getTableCells().get(cellIndex).setText( | |||||
| ParseWordUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0).toString()); | |||||
| } | |||||
| for (;cellIndex<params.length;cellIndex++) { | |||||
| currentRow.createCell().setText( | |||||
| ParseWordUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0).toString()); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 解析参数行,获取参数列表 | |||||
| *@Author JueYue | |||||
| *@date 2013-11-18 | |||||
| *@param currentRow | |||||
| *@return | |||||
| */ | |||||
| private String[] parseCurrentRowGetParams(XWPFTableRow currentRow) { | |||||
| List<XWPFTableCell> cells = currentRow.getTableCells(); | |||||
| String[] params = new String[cells.size()]; | |||||
| String text; | |||||
| for (int i=0;i<cells.size();i++) { | |||||
| text = cells.get(i).getText(); | |||||
| params[i] = text==null?"":text.trim().replace("{{","").replace("}}",""); | |||||
| } | |||||
| return params; | |||||
| } | |||||
| private void parseThisRow(List<XWPFTableCell> cells, | |||||
| Map<String, Object> map) throws Exception { | |||||
| for (XWPFTableCell cell : cells) { | |||||
| parseAllParagraphic(cell.getParagraphs(),map); | |||||
| } | |||||
| } | |||||
| /** | |||||
| *判断是不是迭代输出 | |||||
| *@Author JueYue | |||||
| *@date 2013-11-18 | |||||
| *@return | |||||
| * @throws Exception | |||||
| */ | |||||
| private Object checkThisTableIsNeedIterator(XWPFTableCell cell | |||||
| , Map<String, Object> map) throws Exception { | |||||
| String text = cell.getText().trim(); | |||||
| //判断是不是迭代输出 | |||||
| if(text.startsWith("{{")&&text.endsWith("}}")&&text.indexOf("in ")!=-1){ | |||||
| return ParseWordUtil.getRealValue(text.replace("in ", "").trim(),map); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| /** | |||||
| * 解析这个段落 | |||||
| * | |||||
| * @Author JueYue | |||||
| * @date 2013-11-16 | |||||
| * @param paragraph | |||||
| * @param map | |||||
| */ | |||||
| private void parseThisParagraph(XWPFParagraph paragraph, | |||||
| Map<String, Object> map) throws Exception { | |||||
| XWPFRun run; | |||||
| XWPFRun currentRun = null;// 拿到的第一个run,用来set值,可以保存格式 | |||||
| String currentText = "";// 存放当前的text | |||||
| String text; | |||||
| Boolean isfinde = false;// 判断是不是已经遇到{{ | |||||
| List<Integer> runIndex = new ArrayList<Integer>();// 存储遇到的run,把他们置空 | |||||
| for (int i = 0; i < paragraph.getRuns().size(); i++) { | |||||
| run = paragraph.getRuns().get(i); | |||||
| text = run.getText(0); | |||||
| if (text == null || text == "") { | |||||
| continue; | |||||
| }// 如果为空或者""这种这继续循环跳过 | |||||
| if (isfinde) { | |||||
| currentText += text; | |||||
| if (currentText.indexOf("{{") == -1) { | |||||
| isfinde = false; | |||||
| runIndex.clear(); | |||||
| } else { | |||||
| runIndex.add(i); | |||||
| } | |||||
| if (currentText.indexOf("}}") != -1) { | |||||
| changeValues(paragraph, currentRun, currentText, runIndex, | |||||
| map); | |||||
| currentText = ""; | |||||
| isfinde = false; | |||||
| } | |||||
| } else if (text.indexOf("{") >= 0) {// 判断是不是开始 | |||||
| currentText = text; | |||||
| isfinde = true; | |||||
| currentRun = run; | |||||
| }else{ | |||||
| currentText = ""; | |||||
| } | |||||
| if (currentText.indexOf("}}") != -1) { | |||||
| changeValues(paragraph, currentRun, currentText, runIndex, map); | |||||
| isfinde = false; | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 根据条件改变值 | |||||
| * | |||||
| * @param map | |||||
| * @Author JueYue | |||||
| * @date 2013-11-16 | |||||
| */ | |||||
| private void changeValues(XWPFParagraph paragraph, | |||||
| XWPFRun currentRun, String currentText, List<Integer> runIndex, | |||||
| Map<String, Object> map) throws Exception { | |||||
| Object obj = ParseWordUtil.getRealValue(currentText, map); | |||||
| if(obj instanceof WordImageEntity){//如果是图片就设置为图片 | |||||
| currentRun.setText("", 0); | |||||
| addAnImage((WordImageEntity)obj,currentRun); | |||||
| }else{ | |||||
| currentText = obj.toString(); | |||||
| currentRun.setText(currentText,0); | |||||
| } | |||||
| for (int k = 0; k < runIndex.size(); k++) { | |||||
| paragraph.getRuns().get(runIndex.get(k)).setText("", 0); | |||||
| } | |||||
| runIndex.clear(); | |||||
| } | |||||
| /** | |||||
| * 添加图片 | |||||
| *@Author JueYue | |||||
| *@date 2013-11-20 | |||||
| *@param obj | |||||
| *@param currentRun | |||||
| * @throws Exception | |||||
| */ | |||||
| private void addAnImage(WordImageEntity obj, XWPFRun currentRun) throws Exception { | |||||
| Object [] isAndType = ParseWordUtil.getIsAndType(obj); | |||||
| String picId; | |||||
| try { | |||||
| picId = currentRun.getParagraph().getDocument().addPictureData( | |||||
| (byte[]) isAndType[0], | |||||
| (Integer) isAndType[1]); | |||||
| ((JeecgXWPFDocument) currentRun.getParagraph().getDocument()).createPicture( | |||||
| currentRun,picId, | |||||
| currentRun.getParagraph().getDocument().getNextPicNameNumber((Integer) isAndType[1]), | |||||
| obj.getWidth(),obj.getHeight()); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,143 @@ | |||||
| package org.jeecgframework.poi.word.util; | |||||
| import java.awt.image.BufferedImage; | |||||
| import java.io.ByteArrayOutputStream; | |||||
| import java.io.File; | |||||
| import java.lang.reflect.InvocationTargetException; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| import javax.imageio.ImageIO; | |||||
| import org.apache.poi.xwpf.usermodel.XWPFDocument; | |||||
| import org.jeecgframework.poi.util.POIPublicUtil; | |||||
| import org.jeecgframework.poi.word.entity.WordImageEntity; | |||||
| /** | |||||
| * 解析公告类 | |||||
| * @author JueYue | |||||
| * @date 2014-7-24 | |||||
| * @version 1.1 | |||||
| */ | |||||
| public class ParseWordUtil { | |||||
| /** | |||||
| * 解析数据 | |||||
| * | |||||
| * @Author JueYue | |||||
| * @date 2013-11-16 | |||||
| * @return | |||||
| */ | |||||
| public static Object getRealValue(String currentText, | |||||
| Map<String, Object> map) throws Exception { | |||||
| String params = ""; | |||||
| while (currentText.indexOf("{{") != -1) { | |||||
| params = currentText.substring(currentText.indexOf("{{") + 2, | |||||
| currentText.indexOf("}}")); | |||||
| Object obj = getParamsValue(params.trim(),map); | |||||
| //判断图片或者是集合 | |||||
| if(obj instanceof WordImageEntity||obj instanceof List){ | |||||
| return obj; | |||||
| }else{ | |||||
| currentText = currentText.replace("{{" + params + "}}", | |||||
| obj.toString()); | |||||
| } | |||||
| } | |||||
| return currentText; | |||||
| } | |||||
| /** | |||||
| * 获取参数值 | |||||
| * | |||||
| * @param params | |||||
| * @param map | |||||
| * @return | |||||
| */ | |||||
| private 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); | |||||
| } | |||||
| return map.containsKey(params) ? map.get(params) : ""; | |||||
| } | |||||
| /** | |||||
| * 通过遍历过去对象值 | |||||
| * | |||||
| * @param object | |||||
| * @param paramsArr | |||||
| * @param index | |||||
| * @return | |||||
| * @throws Exception | |||||
| * @throws InvocationTargetException | |||||
| * @throws IllegalAccessException | |||||
| * @throws IllegalArgumentException | |||||
| */ | |||||
| @SuppressWarnings("rawtypes") | |||||
| public static Object getValueDoWhile(Object object, String[] paramsArr, | |||||
| int index) throws Exception{ | |||||
| if (object == null) { | |||||
| return ""; | |||||
| } | |||||
| if(object instanceof WordImageEntity){ | |||||
| return object; | |||||
| } | |||||
| if (object instanceof Map) { | |||||
| object = ((Map) object).get(paramsArr[index]); | |||||
| } else { | |||||
| object = POIPublicUtil.getMethod(paramsArr[index], | |||||
| object.getClass()).invoke(object, new Object[] {}); | |||||
| } | |||||
| return (index == paramsArr.length - 1) ? (object == null ? "" : object) | |||||
| : getValueDoWhile(object, paramsArr, ++index); | |||||
| } | |||||
| /** | |||||
| * 返回流和图片类型 | |||||
| *@Author JueYue | |||||
| *@date 2013-11-20 | |||||
| *@param obj | |||||
| *@return (byte[]) isAndType[0],(Integer)isAndType[1] | |||||
| * @throws Exception | |||||
| */ | |||||
| public static Object[] getIsAndType(WordImageEntity entity) throws Exception { | |||||
| Object[] result = new Object[2]; | |||||
| String type; | |||||
| if(entity.getType().equals(WordImageEntity.URL)){ | |||||
| ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); | |||||
| BufferedImage bufferImg; | |||||
| String path = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath() +entity.getUrl(); | |||||
| path = path.replace("WEB-INF/classes/",""); | |||||
| path = path.replace("file:/",""); | |||||
| bufferImg = ImageIO.read( | |||||
| new File(path)); | |||||
| ImageIO.write(bufferImg,entity.getUrl().substring(entity.getUrl().indexOf(".")+1,entity.getUrl().length()),byteArrayOut); | |||||
| result[0] = byteArrayOut.toByteArray(); | |||||
| type = entity.getUrl().split("/.")[ entity.getUrl().split("/.").length-1]; | |||||
| }else{ | |||||
| result[0] = entity.getData(); | |||||
| type = POIPublicUtil.getFileExtendName(entity.getData()); | |||||
| } | |||||
| result[1] = getImageType(type); | |||||
| return result; | |||||
| } | |||||
| private static Integer getImageType(String type) { | |||||
| if(type.equalsIgnoreCase("JPG")||type.equalsIgnoreCase("JPEG")){ | |||||
| return XWPFDocument.PICTURE_TYPE_JPEG; | |||||
| } | |||||
| if(type.equalsIgnoreCase("GIF")){ | |||||
| return XWPFDocument.PICTURE_TYPE_GIF; | |||||
| } | |||||
| if(type.equalsIgnoreCase("BMP")){ | |||||
| return XWPFDocument.PICTURE_TYPE_GIF; | |||||
| } | |||||
| if(type.equalsIgnoreCase("PNG")){ | |||||
| return XWPFDocument.PICTURE_TYPE_PNG; | |||||
| } | |||||
| return XWPFDocument.PICTURE_TYPE_JPEG; | |||||
| } | |||||
| } | |||||
| @@ -1,5 +1,5 @@ | |||||
| #Generated by Maven Integration for Eclipse | #Generated by Maven Integration for Eclipse | ||||
| #Thu Jul 24 22:34:43 CST 2014 | |||||
| #Thu Jul 24 23:06:08 CST 2014 | |||||
| version=2.0.1 | version=2.0.1 | ||||
| groupId=org.jeecgframework | groupId=org.jeecgframework | ||||
| m2e.projectName=easypoi-base | m2e.projectName=easypoi-base | ||||