Ver a proveniência

优化了一下代码,sort 的compare 改为类实现接口,getValue统一由public处理

4.1.3.A
jueyue há 10 anos
ascendente
cometimento
2aac3862a1
9 ficheiros alterados com 47 adições e 75 eliminações
  1. +2
    -3
      easypoi-base/src/main/java/org/jeecgframework/poi/cache/ExcelCache.java
  2. +1
    -2
      easypoi-base/src/main/java/org/jeecgframework/poi/cache/WordCache.java
  3. +3
    -3
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java
  4. +0
    -16
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ComparatorExcelField.java
  5. +6
    -1
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelExportEntity.java
  6. +2
    -3
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java
  7. +22
    -40
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java
  8. +3
    -2
      easypoi-base/src/main/java/org/jeecgframework/poi/exception/word/enmus/WordExportEnum.java
  9. +8
    -5
      easypoi-base/src/main/java/org/jeecgframework/poi/util/POIPublicUtil.java

+ 2
- 3
easypoi-base/src/main/java/org/jeecgframework/poi/cache/ExcelCache.java Ver ficheiro

@@ -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
- 2
easypoi-base/src/main/java/org/jeecgframework/poi/cache/WordCache.java Ver ficheiro

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


+ 3
- 3
easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java Ver ficheiro

@@ -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();


+ 0
- 16
easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ComparatorExcelField.java Ver ficheiro

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

+ 6
- 1
easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelExportEntity.java Ver ficheiro

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

+ 2
- 3
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java Ver ficheiro

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


+ 22
- 40
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java Ver ficheiro

@@ -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());


+ 3
- 2
easypoi-base/src/main/java/org/jeecgframework/poi/exception/word/enmus/WordExportEnum.java Ver ficheiro

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


+ 8
- 5
easypoi-base/src/main/java/org/jeecgframework/poi/util/POIPublicUtil.java Ver ficheiro

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


Carregando…
Cancelar
Guardar