Parcourir la source

!48 针对"{{" 和 list获取为null的情况处理

Merge pull request !48 from 阿丘的梦想/master
4.1.3.A
jueyue il y a 5 ans
committed by Gitee
Parent
révision
1eecf9c85f
4 fichiers modifiés avec 29 ajouts et 21 suppressions
  1. +5
    -4
      easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java
  2. +1
    -2
      easypoi-base/src/main/java/cn/afterturn/easypoi/word/WordExportUtil.java
  3. +21
    -14
      easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java
  4. +2
    -1
      easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/excel/ExcelEntityParse.java

+ 5
- 4
easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java Voir le fichier

@@ -361,12 +361,10 @@ public final class PoiPublicUtil {
Map<String, Object> map) throws Exception {
String params = "";
while (currentText.indexOf(START_STR) != -1) {
params = currentText.substring(currentText.indexOf(START_STR) + 2,
currentText.indexOf(END_STR));
params = currentText.substring(currentText.indexOf(START_STR) + 2, currentText.indexOf(END_STR));
Object obj = PoiElUtil.eval(params.trim(), map);
//判断图片或者是集合
if (obj instanceof ImageEntity || obj instanceof List
|| obj instanceof ExcelListEntity) {
if (obj instanceof ImageEntity || obj instanceof List || obj instanceof ExcelListEntity) {
return obj;
} else if (obj != null){
currentText = currentText.replace(START_STR + params + END_STR, obj.toString());
@@ -456,6 +454,9 @@ public final class PoiPublicUtil {
currentRun.addBreak();
}
currentRun.setText(tempArr[tempArr.length - 1], tempArr.length - 1);
}else{
//对blank字符串做处理,避免显示"{{"
currentRun.setText("",0);
}
}


+ 1
- 2
easypoi-base/src/main/java/cn/afterturn/easypoi/word/WordExportUtil.java Voir le fichier

@@ -56,8 +56,7 @@ public class WordExportUtil {
* @param map
* 解析数据源
*/
public static void exportWord07(XWPFDocument document,
Map<String, Object> map) throws Exception {
public static void exportWord07(XWPFDocument document, Map<String, Object> map) throws Exception {
new ParseWord07().parseWord(document, map);
}


+ 21
- 14
easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java Voir le fichier

@@ -27,10 +27,7 @@ import org.apache.poi.xwpf.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.*;
import static cn.afterturn.easypoi.util.PoiElUtil.*;
@@ -86,7 +83,9 @@ public class ParseWord07 {
text = text.replace(FOREACH_NOT_CREATE, EMPTY).replace(FOREACH_AND_SHIFT, EMPTY)
.replace(FOREACH, EMPTY).replace(START_STR, EMPTY);
String[] keys = text.replaceAll("\\s{1,}", " ").trim().split(" ");
return PoiPublicUtil.getParamsValue(keys[0], map);
Object result=PoiPublicUtil.getParamsValue(keys[0], map);
//添加list默认值,避免将{{$fe: list t.sn t.hoby t.remark}} 这类标签直接显示出来
return Objects.nonNull(result)?result:new ArrayList<Map<String,Object>>(0);
}
return null;
}
@@ -120,14 +119,17 @@ public class ParseWord07 {
* @author JueYue
* 2013-11-16
*/
private void parseThisParagraph(XWPFParagraph paragraph,
Map<String, Object> map) throws Exception {
private void parseThisParagraph(XWPFParagraph paragraph, Map<String, Object> map) throws Exception {
XWPFRun run;
XWPFRun currentRun = null;// 拿到的第一个run,用来set值,可以保存格式
String currentText = "";// 存放当前的text
// 拿到的第一个run,用来set值,可以保存格式
XWPFRun currentRun = null;
// 存放当前的text
String currentText = "";
String text;
Boolean isfinde = false;// 判断是不是已经遇到{{
List<Integer> runIndex = new ArrayList<Integer>();// 存储遇到的run,把他们置空
// 判断是不是已经遇到{{
Boolean isfinde = false;
// 存储遇到的run,把他们置空
List<Integer> runIndex = new ArrayList<Integer>();
for (int i = 0; i < paragraph.getRuns().size(); i++) {
run = paragraph.getRuns().get(i);
text = run.getText(0);
@@ -147,7 +149,8 @@ public class ParseWord07 {
currentText = "";
isfinde = false;
}
} else if (text.indexOf(START_STR) >= 0) {// 判断是不是开始
// 判断是不是开始
} else if (text.indexOf(START_STR) >= 0) {
currentText = text;
isfinde = true;
currentRun = run;
@@ -168,6 +171,8 @@ public class ParseWord07 {
}
}
/**
* 解析这个表格
*
@@ -188,10 +193,12 @@ public class ParseWord07 {
parseThisRow(cells, map);
} else if (listobj instanceof ExcelListEntity) {
new ExcelEntityParse().parseNextRowAndAddRow(table, i, (ExcelListEntity) listobj);
i = i + ((ExcelListEntity) listobj).getList().size() - 1;//删除之后要往上挪一行,然后加上跳过新建的行数
//删除之后要往上挪一行,然后加上跳过新建的行数
i = i + ((ExcelListEntity) listobj).getList().size() - 1;
} else {
ExcelMapParse.parseNextRowAndAddRow(table, i, (List) listobj);
i = i + ((List) listobj).size() - 1;//删除之后要往上挪一行,然后加上跳过新建的行数
//删除之后要往上挪一行,然后加上跳过新建的行数
i = i + ((List) listobj).size() - 1;
}
}
}


+ 2
- 1
easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/excel/ExcelEntityParse.java Voir le fichier

@@ -161,7 +161,8 @@ public class ExcelEntityParse extends ExportCommonService {
* @param entity
*/
public void parseNextRowAndAddRow(XWPFTable table, int index, ExcelListEntity entity) {
table.removeRow(index);// 删除这一行
// 删除这一行
table.removeRow(index);
checkExcelParams(entity);
// 获取表头数据
Map<String, Integer> titlemap = getTitleMap(table, index, entity.getHeadRows());


Chargement…
Annuler
Enregistrer