@@ -1,6 +1,5 @@ | |||
package org.jeecgframework.poi.cache; | |||
import java.io.IOException; | |||
import java.io.InputStream; | |||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; | |||
@@ -35,12 +34,12 @@ public final class ExcelCache { | |||
return wb; | |||
} catch (InvalidFormatException e) { | |||
LOGGER.error(e.getMessage(),e); | |||
} catch (IOException e) { | |||
} catch (Exception e) { | |||
LOGGER.error(e.getMessage(),e); | |||
} finally { | |||
try { | |||
is.close(); | |||
} catch (IOException e) { | |||
} catch (Exception e) { | |||
LOGGER.error(e.getMessage(),e); | |||
} | |||
} | |||
@@ -1,6 +1,5 @@ | |||
package org.jeecgframework.poi.cache; | |||
import java.io.IOException; | |||
import java.io.InputStream; | |||
import org.jeecgframework.poi.cache.manager.POICacheManager; | |||
@@ -29,7 +28,7 @@ public class WordCache { | |||
} finally { | |||
try { | |||
is.close(); | |||
} catch (IOException e) { | |||
} catch (Exception e) { | |||
LOGGER.error(e.getMessage(),e); | |||
} | |||
} | |||
@@ -35,7 +35,7 @@ public final class ExcelExportUtil { | |||
public static Workbook exportExcel(ExportParams entity, Class<?> pojoClass, | |||
Collection<?> dataSet) { | |||
Workbook workbook; | |||
if (entity.getType().equals(ExcelType.HSSF)) { | |||
if (ExcelType.HSSF.equals(entity.getType())) { | |||
workbook = new HSSFWorkbook(); | |||
} else if (dataSet.size() < 1000) { | |||
workbook = new XSSFWorkbook(); | |||
@@ -58,7 +58,7 @@ public final class ExcelExportUtil { | |||
public static Workbook exportExcel(ExportParams entity, List<ExcelExportEntity> entityList, | |||
Collection<? extends Map<?, ?>> dataSet) { | |||
Workbook workbook; | |||
if (entity.getType().equals(ExcelType.HSSF)) { | |||
if (ExcelType.HSSF.equals(entity.getType())) { | |||
workbook = new HSSFWorkbook(); | |||
} else if (dataSet.size() < 1000) { | |||
workbook = new XSSFWorkbook(); | |||
@@ -79,7 +79,7 @@ public final class ExcelExportUtil { | |||
*/ | |||
public static Workbook exportExcel(List<Map<String, Object>> list, String type) { | |||
Workbook workbook; | |||
if (type.equals(ExcelType.HSSF)) { | |||
if (ExcelType.HSSF.equals(type)) { | |||
workbook = new HSSFWorkbook(); | |||
} else { | |||
workbook = new XSSFWorkbook(); | |||
@@ -1,16 +0,0 @@ | |||
package org.jeecgframework.poi.excel.entity.params; | |||
import java.util.Comparator; | |||
/** | |||
* 按照升序排序 | |||
* @author JueYue | |||
* | |||
*/ | |||
public class ComparatorExcelField implements Comparator<ExcelExportEntity> { | |||
public int compare(ExcelExportEntity prev, ExcelExportEntity next) { | |||
return prev.getOrderNum() - next.getOrderNum(); | |||
} | |||
} |
@@ -8,7 +8,7 @@ import java.util.List; | |||
* @author JueYue | |||
* @version 1.0 2013年8月24日 | |||
*/ | |||
public class ExcelExportEntity extends ExcelBaseEntity { | |||
public class ExcelExportEntity extends ExcelBaseEntity implements Comparable<ExcelExportEntity> { | |||
/** | |||
* 如果是MAP导出,这个是map的key | |||
@@ -172,4 +172,9 @@ public class ExcelExportEntity extends ExcelBaseEntity { | |||
this.isStatistics = isStatistics; | |||
} | |||
@Override | |||
public int compareTo(ExcelExportEntity prev) { | |||
return this.getOrderNum() - prev.getOrderNum(); | |||
} | |||
} |
@@ -15,7 +15,6 @@ import org.apache.commons.lang.StringUtils; | |||
import org.jeecgframework.poi.excel.annotation.Excel; | |||
import org.jeecgframework.poi.excel.annotation.ExcelCollection; | |||
import org.jeecgframework.poi.excel.annotation.ExcelEntity; | |||
import org.jeecgframework.poi.excel.entity.params.ComparatorExcelField; | |||
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; | |||
import org.jeecgframework.poi.handler.inter.IExcelDataHandler; | |||
import org.jeecgframework.poi.util.POIPublicUtil; | |||
@@ -296,10 +295,10 @@ public class ExportBase { | |||
* 对字段根据用户设置排序 | |||
*/ | |||
public void sortAllParams(List<ExcelExportEntity> excelParams) { | |||
Collections.sort(excelParams, new ComparatorExcelField()); | |||
Collections.sort(excelParams); | |||
for (ExcelExportEntity entity : excelParams) { | |||
if (entity.getList() != null) { | |||
Collections.sort(entity.getList(), new ComparatorExcelField()); | |||
Collections.sort(entity.getList()); | |||
} | |||
} | |||
} | |||
@@ -42,6 +42,9 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||
private static final Logger LOGGER = LoggerFactory | |||
.getLogger(ExcelExportOfTemplateUtil.class); | |||
private static final String START_STR = "{{"; | |||
private static final String END_STR = "}}"; | |||
/** | |||
* 缓存temp 的for each创建的cell ,跳过这个cell的模板语法查找,提高效率 | |||
*/ | |||
@@ -188,7 +191,8 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||
private String 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 String | |||
.valueOf(POIPublicUtil.getValueDoWhile(map.get(paramsArr[0]), paramsArr, 1)); | |||
} | |||
return map.containsKey(params) ? map.get(params).toString() : ""; | |||
} | |||
@@ -221,33 +225,6 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||
} | |||
/** | |||
* 通过遍历过去对象值 | |||
* | |||
* @param object | |||
* @param paramsArr | |||
* @param index | |||
* @return | |||
* @throws Exception | |||
* @throws java.lang.reflect.InvocationTargetException | |||
* @throws IllegalAccessException | |||
* @throws IllegalArgumentException | |||
*/ | |||
@SuppressWarnings("rawtypes") | |||
private String getValueDoWhile(Object object, String[] paramsArr, int index) throws Exception { | |||
if (object == null) { | |||
return ""; | |||
} | |||
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.toString()) | |||
: getValueDoWhile(object, paramsArr, ++index); | |||
} | |||
private void parseTemplate(Sheet sheet, Map<String, Object> map) throws Exception { | |||
Row row = null; | |||
int index = 0; | |||
@@ -274,14 +251,17 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||
try {// step 1. 判断这个cell里面是不是函数 | |||
oldString = cell.getStringCellValue(); | |||
} catch (Exception e) { | |||
LOGGER.error(e.getMessage(), e); | |||
return; | |||
} | |||
if (oldString != null && oldString.indexOf("{{") != -1 && !oldString.contains("foreach||")) { | |||
if (oldString != null && oldString.indexOf(START_STR) != -1 | |||
&& !oldString.contains("foreach||")) { | |||
// setp 2. 判断是否含有解析函数 | |||
String params; | |||
while (oldString.indexOf("{{") != -1) { | |||
params = oldString.substring(oldString.indexOf("{{") + 2, oldString.indexOf("}}")); | |||
oldString = oldString.replace("{{" + params + "}}", | |||
while (oldString.indexOf(START_STR) != -1) { | |||
params = oldString.substring(oldString.indexOf(START_STR) + 2, | |||
oldString.indexOf(END_STR)); | |||
oldString = oldString.replace(START_STR + params + END_STR, | |||
getParamsValue(params.trim(), map)); | |||
} | |||
cell.setCellValue(oldString); | |||
@@ -305,7 +285,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||
throws Exception { | |||
boolean isCreate = !name.startsWith("!"); | |||
Collection<?> datas = (Collection<?>) map.get(name.substring(name.indexOf("||") + 2, | |||
name.indexOf("{{"))); | |||
name.indexOf(START_STR))); | |||
List<String> columns = getAllDataColumns(cell, name); | |||
if (datas == null) { | |||
return; | |||
@@ -339,7 +319,8 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||
row.createCell(i); | |||
} | |||
for (int i = 0, max = columns.size(); i < max; i++) { | |||
String val = getValueDoWhile(t, columns.get(i).split("\\."), 0); | |||
String val = String.valueOf(POIPublicUtil.getValueDoWhile(t, columns.get(i) | |||
.split("\\."), 0)); | |||
row.getCell(i + columnIndex).setCellValue(val); | |||
tempCreateCellSet.add(row.getRowNum() + "_" + (i + columnIndex)); | |||
} | |||
@@ -354,12 +335,12 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||
*/ | |||
private List<String> getAllDataColumns(Cell cell, String name) { | |||
List<String> columns = new ArrayList<String>(); | |||
if (name.contains("}}")) { | |||
columns.add(name.substring(name.indexOf("{{") + 2, name.indexOf("}}")).trim()); | |||
if (name.contains(END_STR)) { | |||
columns.add(name.substring(name.indexOf(START_STR) + 2, name.indexOf(END_STR)).trim()); | |||
cell.setCellValue(""); | |||
return columns; | |||
} | |||
columns.add(name.substring(name.indexOf("{{") + 2).trim()); | |||
columns.add(name.substring(name.indexOf(START_STR) + 2).trim()); | |||
int index = cell.getColumnIndex(); | |||
Cell tempCell; | |||
while (true) { | |||
@@ -368,14 +349,15 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { | |||
try {//不允许为空 | |||
cellStringString = tempCell.getStringCellValue(); | |||
if (StringUtils.isBlank(cellStringString)) { | |||
throw new RuntimeException(); | |||
throw new ExcelExportException(); | |||
} | |||
} catch (Exception e) { | |||
throw new ExcelExportException("for each 当中存在空字符串,请检查模板"); | |||
} | |||
//把读取过的cell 置为空 | |||
cell.setCellValue(""); | |||
if (cellStringString.contains("}}")) { | |||
columns.add(cellStringString.trim().replace("}}", "")); | |||
if (cellStringString.contains(END_STR)) { | |||
columns.add(cellStringString.trim().replace(END_STR, "")); | |||
break; | |||
} else { | |||
columns.add(cellStringString.trim()); | |||
@@ -8,8 +8,9 @@ package org.jeecgframework.poi.exception.word.enmus; | |||
*/ | |||
public enum WordExportEnum { | |||
EXCEL_PARAMS_ERROR("Excel 导出 参数错误"), EXCEL_HEAD_HAVA_NULL("Excel 表头 有的字段为空"), EXCEL_NO_HEAD( | |||
"Excel 没有表头"); | |||
EXCEL_PARAMS_ERROR ("Excel 导出 参数错误") , | |||
EXCEL_HEAD_HAVA_NULL ("Excel 表头 有的字段为空") , | |||
EXCEL_NO_HEAD ("Excel 没有表头"); | |||
private String msg; | |||
@@ -37,8 +37,12 @@ import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; | |||
import org.jeecgframework.poi.word.entity.WordImageEntity; | |||
import org.jeecgframework.poi.word.entity.params.ExcelListEntity; | |||
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; | |||
public class POIPublicUtil { | |||
/** | |||
* EASYPOI 的公共基础类 | |||
* @author JueYue | |||
* @date 2015年4月5日 上午12:59:22 | |||
*/ | |||
public final class POIPublicUtil { | |||
private POIPublicUtil() { | |||
@@ -168,7 +172,7 @@ public class POIPublicUtil { | |||
public static Map<String, PictureData> getSheetPictrues03(HSSFSheet sheet, HSSFWorkbook workbook) { | |||
Map<String, PictureData> sheetIndexPicMap = new HashMap<String, PictureData>(); | |||
List<HSSFPictureData> pictures = workbook.getAllPictures(); | |||
if (pictures.size() != 0) { | |||
if (!pictures.isEmpty()) { | |||
for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) { | |||
HSSFClientAnchor anchor = (HSSFClientAnchor) shape.getAnchor(); | |||
if (shape instanceof HSSFPicture) { | |||
@@ -412,8 +416,7 @@ public class POIPublicUtil { | |||
if (object instanceof Map) { | |||
object = ((Map) object).get(paramsArr[index]); | |||
} else { | |||
object = POIPublicUtil.getMethod(paramsArr[index], object.getClass()).invoke(object, | |||
new Object[] {}); | |||
object = getMethod(paramsArr[index], object.getClass()).invoke(object, new Object[] {}); | |||
} | |||
return (index == paramsArr.length - 1) ? (object == null ? "" : object) : getValueDoWhile( | |||
object, paramsArr, ++index); | |||