From a4d957be987b9e0240323499e0440b773bf2a5f3 Mon Sep 17 00:00:00 2001 From: 林致杰 <1003392067@qq.com> Date: 星期二, 26 七月 2022 15:28:03 +0800 Subject: [PATCH] 问题修复 --- src/main/java/com/ots/common/utils/poi/WordUtil.java | 55 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/ots/common/utils/poi/WordUtil.java b/src/main/java/com/ots/common/utils/poi/WordUtil.java index 9cc37ee..ab17064 100644 --- a/src/main/java/com/ots/common/utils/poi/WordUtil.java +++ b/src/main/java/com/ots/common/utils/poi/WordUtil.java @@ -817,8 +817,7 @@ try { run.setText(changeValue(run.toString(), textMap, run, paragraph, document, runPosition), 0); } catch (Exception e) { - - + e.printStackTrace(); } } @@ -1113,11 +1112,16 @@ } else { String keyTemp = textSet.getKey(); String keyValue = Objects.isNull(textSet.getValue()) ? "" : textSet.getValue().toString(); - if (StringUtils.contains(keyValue, "%line-feed%")) { - + + //琛ㄦ牸閲岀殑鎹㈣ 鐗规畩澶勭悊 鍥犱负娌℃湁娈佃惤 + if(StringUtils.contains(keyValue, "%table-line-feed%")){ + String[] keyValues = keyValue.split("%table-line-feed%"); + runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document,1); + }else{ String[] keyValues = keyValue.split("%line-feed%"); - runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document); + runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document,0); } + log.info("ChangeValue鐨刱ey鍊硷細" + key + " ChangeValue鐨剉alue鍊硷細" + keyValue); runValue = runValue.replaceAll(key, keyValue); } @@ -1610,10 +1614,14 @@ ctpPr.addNewSectPr(); } - private static String delDynList(String placeholder, List obj, XWPFParagraph oldParagraph, XWPFDocument templateDoc) { + + private static String delDynList(String placeholder, List obj, XWPFParagraph oldParagraph, XWPFDocument templateDoc,Integer flag) { String placeholderValue = placeholder; List dataList = obj; - Collections.reverse(dataList); + //鏅�氭崲琛岄檷搴忓鐞� 琛ㄦ牸鎹㈣鏃犻渶闄嶅簭 + if(flag == 0){ + Collections.reverse(dataList); + } XWPFRun oldRun = oldParagraph.getRuns().size() > 0 ? oldParagraph.getRuns().get(0) : null; Boolean isBold = Objects.nonNull(oldRun) ? oldRun.isBold() : false; for (int i = 0, size = dataList.size(); i < size; i++) { @@ -1622,7 +1630,13 @@ if (i == 0) { placeholderValue = String.valueOf(text); } else { - XWPFParagraph paragraph = createParagraph(oldParagraph, templateDoc, oldRun, isBold, String.valueOf(text)); + XWPFParagraph paragraph = null; + if(flag == 0){ + paragraph = createParagraph(oldParagraph, templateDoc, oldRun, isBold, String.valueOf(text)); + }else if(flag == 1){ + paragraph = createTableRun(oldParagraph, oldRun, isBold, String.valueOf(text)); + } + if (paragraph != null) { oldParagraph = paragraph; } @@ -1640,8 +1654,31 @@ copyParagraph(oldParagraph, newPar, oldRun, isBold, texts); return newPar; } + + /** + * 鍒涘缓table琛ㄦ牸鎹㈣ 娈佃惤run + * @param oldParagraph + * @param oldRun + * @param isBold + * @param texts + * @return + */ + public static XWPFParagraph createTableRun(XWPFParagraph oldParagraph,XWPFRun oldRun, boolean isBold, String... texts) { + + XWPFRun run = oldParagraph.createRun(); + run.addBreak(); + run.setText(texts[0]); + run.setFontFamily(oldRun.getFontFamily()); + int fontSize = oldRun.getFontSize(); + run.setFontSize((fontSize == -1) ? DEFAULT_FONT_SIZE : fontSize); + run.setBold(isBold); + run.setItalic(oldRun.isItalic()); + run.setColor(oldRun.getColor()); + + return null; + } - ; + private static void copyParagraph(XWPFParagraph sourcePar, XWPFParagraph targetPar, XWPFRun oldRun, boolean isBold, String... texts) { targetPar.setAlignment(sourcePar.getAlignment()); targetPar.setVerticalAlignment(sourcePar.getVerticalAlignment()); -- Gitblit v1.9.1