From 9eb50c69becd2ea102e9b83978e0ef9cfeddbd6e Mon Sep 17 00:00:00 2001 From: shimingen Date: Fri, 28 Jun 2019 10:29:16 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E9=83=A8=E9=97=A8=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../easypoi/word/WordExportUtil.java | 3 +-- .../easypoi/word/parse/ParseWord07.java | 24 ++++++++++++------- .../word/parse/excel/ExcelEntityParse.java | 3 ++- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/WordExportUtil.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/WordExportUtil.java index 33c1233..cdc1ddb 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/WordExportUtil.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/WordExportUtil.java @@ -56,8 +56,7 @@ public class WordExportUtil { * @param map * 解析数据源 */ - public static void exportWord07(XWPFDocument document, - Map map) throws Exception { + public static void exportWord07(XWPFDocument document, Map map) throws Exception { new ParseWord07().parseWord(document, map); } diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java index 1338099..2491096 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java @@ -56,7 +56,8 @@ public class ParseWord07 { private void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText, List runIndex, Map map) throws Exception { Object obj = PoiPublicUtil.getRealValue(currentText, map); - if (obj instanceof ImageEntity) {// 如果是图片就设置为图片 + // 如果是图片就设置为图片 + if (obj instanceof ImageEntity) { currentRun.setText("", 0); ExcelMapParse.addAnImage((ImageEntity) obj, currentRun); } else { @@ -122,11 +123,15 @@ public class ParseWord07 { private void parseThisParagraph(XWPFParagraph paragraph, Map 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 runIndex = new ArrayList();// 存储遇到的run,把他们置空 + // 判断是不是已经遇到{{ + Boolean isfinde = false; + // 存储遇到的run,把他们置空 + List runIndex = new ArrayList(); for (int i = 0; i < paragraph.getRuns().size(); i++) { run = paragraph.getRuns().get(i); text = run.getText(0); @@ -146,7 +151,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; @@ -187,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; } } } diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/excel/ExcelEntityParse.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/excel/ExcelEntityParse.java index bc80722..c0ff640 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/excel/ExcelEntityParse.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/excel/ExcelEntityParse.java @@ -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 titlemap = getTitleMap(table, index, entity.getHeadRows()); From 5620bfb437b549b359ac8cce124d30d280864647 Mon Sep 17 00:00:00 2001 From: shimingen Date: Fri, 28 Jun 2019 11:33:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=87=BA=E7=8E=B0null=E5=80=BC=E6=88=96?= =?UTF-8?q?=E8=80=85""=E7=9A=84=E5=A4=84=E7=90=86=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/afterturn/easypoi/util/PoiPublicUtil.java | 8 ++++---- .../java/cn/afterturn/easypoi/word/parse/ParseWord07.java | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java index 649ba65..f501267 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java @@ -361,12 +361,10 @@ public final class PoiPublicUtil { Map 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,8 @@ public final class PoiPublicUtil { currentRun.addBreak(); } currentRun.setText(tempArr[tempArr.length - 1], tempArr.length - 1); + }else{ + currentRun.setText("",0); } } diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java index 2491096..5ff3f67 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java @@ -120,8 +120,7 @@ public class ParseWord07 { * @author JueYue * 2013-11-16 */ - private void parseThisParagraph(XWPFParagraph paragraph, - Map map) throws Exception { + private void parseThisParagraph(XWPFParagraph paragraph, Map map) throws Exception { XWPFRun run; // 拿到的第一个run,用来set值,可以保存格式 XWPFRun currentRun = null; From 24ba34460dfe8e99cece75e9ffe247586817d2da Mon Sep 17 00:00:00 2001 From: shimingen Date: Fri, 28 Jun 2019 12:26:08 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=87=BA=E7=8E=B0null=E5=80=BC=E6=88=96?= =?UTF-8?q?=E8=80=85""=E7=9A=84=E5=A4=84=E7=90=86=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/afterturn/easypoi/word/parse/ParseWord07.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java index 5ff3f67..64ad808 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java @@ -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,8 @@ 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); + return Objects.nonNull(result)?result:new ArrayList>(0); } return null; } @@ -172,6 +170,8 @@ public class ParseWord07 { } } + + /** * 解析这个表格 * From e68e7a7733afe83b46c5940ff6e6946f85a4b690 Mon Sep 17 00:00:00 2001 From: shimingen Date: Fri, 28 Jun 2019 12:33:08 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=87=BA=E7=8E=B0null=E5=80=BC=E6=88=96?= =?UTF-8?q?=E8=80=85""=E7=9A=84=E5=A4=84=E7=90=86=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java | 1 + .../main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java | 1 + 2 files changed, 2 insertions(+) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java index f501267..8136f8e 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java @@ -455,6 +455,7 @@ public final class PoiPublicUtil { } currentRun.setText(tempArr[tempArr.length - 1], tempArr.length - 1); }else{ + //对blank字符串做处理,避免显示"{{" currentRun.setText("",0); } } diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java index 64ad808..5bdc824 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java @@ -84,6 +84,7 @@ public class ParseWord07 { .replace(FOREACH, EMPTY).replace(START_STR, EMPTY); String[] keys = text.replaceAll("\\s{1,}", " ").trim().split(" "); Object result=PoiPublicUtil.getParamsValue(keys[0], map); + //添加list默认值,避免将{{$fe: list t.sn t.hoby t.remark}} 这类标签直接显示出来 return Objects.nonNull(result)?result:new ArrayList>(0); } return null;