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