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