From 014639637a80b0549cc0aee00b9a9670fb57827c Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 10 二月 2023 17:26:30 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/helper/WordHelper.java |  107 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 67 insertions(+), 40 deletions(-)

diff --git a/src/main/java/com/lf/server/helper/WordHelper.java b/src/main/java/com/lf/server/helper/WordHelper.java
index 1881103..ff87b12 100644
--- a/src/main/java/com/lf/server/helper/WordHelper.java
+++ b/src/main/java/com/lf/server/helper/WordHelper.java
@@ -1,10 +1,10 @@
 package com.lf.server.helper;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.poi.xwpf.usermodel.*;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
 import java.util.List;
 import java.util.Map;
 
@@ -13,23 +13,34 @@
  * @author WWW
  */
 public class WordHelper {
+    private final static Log log = LogFactory.getLog(WordHelper.class);
+
     /**
      * 閫氳繃word妯℃澘鐢熸垚word鐨勪富鏂规硶
      */
-    public static void generateWord(InputStream inputStream, OutputStream outputStream, Map<String, String> insertTextMap, List<String[]> addList) throws IOException {
-        // 鑾峰彇docx瑙f瀽瀵硅薄
-        XWPFDocument xwpfDocument = new XWPFDocument(inputStream);
+    public static void generateWord(String inputFile, String outPutFile, Map<String, String> insertTextMap, List<String[]> addList) {
+        try {
+            FileInputStream inputStream = new FileInputStream(inputFile);
+            FileOutputStream outputStream = new FileOutputStream(outPutFile);
 
-        // 澶勭悊鎵�鏈夋枃娈垫暟鎹紝闄や簡琛ㄦ牸
-        handleParagraphs(xwpfDocument, insertTextMap);
+            // 鑾峰彇docx瑙f瀽瀵硅薄
+            XWPFDocument xwpfDocument = new XWPFDocument(inputStream);
 
-        // 澶勭悊琛ㄦ牸鏁版嵁
-        handleTable(xwpfDocument, insertTextMap, addList);
+            // 澶勭悊鎵�鏈夋枃娈垫暟鎹紝闄や簡琛ㄦ牸
+            if (null != insertTextMap && insertTextMap.size() > 0) {
+                handleParagraphs(xwpfDocument, insertTextMap);
+            }
 
-        // 鍐欏叆鏁版嵁
-        xwpfDocument.write(outputStream);
+            // 澶勭悊琛ㄦ牸鏁版嵁
+            handleTable(xwpfDocument, insertTextMap, addList);
 
-        outputStream.close();
+            // 鍐欏叆鏁版嵁
+            xwpfDocument.write(outputStream);
+
+            outputStream.close();
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
     }
 
     /**
@@ -50,7 +61,7 @@
     /**
      * 澶勭悊琛ㄦ牸鏁版嵁鏂规硶
      */
-    public static void handleTable(XWPFDocument xwpfDocument, Map<String, String> insertTextMap, List<String[]> addList) {
+    public static void handleTable(XWPFDocument xwpfDocument, Map<String, String> map, List<String[]> addList) {
         List<XWPFTable> tables = xwpfDocument.getTables();
         for (XWPFTable table : tables) {
             List<XWPFTableRow> rows = table.getRows();
@@ -59,36 +70,52 @@
             }
 
             if (isReplacement(table.getText())) {
-                // 鏇挎崲鏁版嵁
-                for (XWPFTableRow row : rows) {
-                    List<XWPFTableCell> tableCells = row.getTableCells();
-                    for (XWPFTableCell tableCell : tableCells) {
-                        if (isReplacement(tableCell.getText())) {
-                            List<XWPFParagraph> paragraphs = tableCell.getParagraphs();
-                            for (XWPFParagraph paragraph : paragraphs) {
-                                List<XWPFRun> runs = paragraph.getRuns();
-                                for (XWPFRun run : runs) {
-                                    run.setText(matchesValue(tableCell.getText(), insertTextMap), 0);
-                                }
-                            }
+                if (null == map || map.isEmpty()) {
+                    continue;
+                }
+
+                replaceData(rows, map);
+            } else {
+                insertData(table, addList);
+            }
+        }
+    }
+
+    /**
+     * 鏇挎崲鏁版嵁
+     */
+    private static void replaceData(List<XWPFTableRow> rows, Map<String, String> map) {
+        for (XWPFTableRow row : rows) {
+            List<XWPFTableCell> tableCells = row.getTableCells();
+            for (XWPFTableCell tableCell : tableCells) {
+                if (isReplacement(tableCell.getText())) {
+                    List<XWPFParagraph> paragraphs = tableCell.getParagraphs();
+                    for (XWPFParagraph paragraph : paragraphs) {
+                        List<XWPFRun> runs = paragraph.getRuns();
+                        for (XWPFRun run : runs) {
+                            run.setText(matchesValue(tableCell.getText(), map), 0);
                         }
                     }
                 }
-            } else {
-                // 鎻掑叆鏁版嵁
-                for (int i = 1; i < addList.size(); i++) {
-                    XWPFTableRow row = table.createRow();
-                }
+            }
+        }
+    }
 
-                List<XWPFTableRow> rowList = table.getRows();
-                for (int i = 1; i < rowList.size(); i++) {
-                    XWPFTableRow xwpfTableRow = rowList.get(i);
-                    List<XWPFTableCell> tableCells = xwpfTableRow.getTableCells();
-                    for (int j = 0; j < tableCells.size(); j++) {
-                        XWPFTableCell xwpfTableCell = tableCells.get(j);
-                        xwpfTableCell.setText(addList.get(i - 1)[j]);
-                    }
-                }
+    /**
+     * 鎻掑叆鏁版嵁
+     */
+    private static void insertData(XWPFTable table,List<String[]> addList) {
+        for (int i = 1; i < addList.size(); i++) {
+            XWPFTableRow row = table.createRow();
+        }
+
+        List<XWPFTableRow> rowList = table.getRows();
+        for (int i = 1; i < rowList.size(); i++) {
+            XWPFTableRow xwpfTableRow = rowList.get(i);
+            List<XWPFTableCell> tableCells = xwpfTableRow.getTableCells();
+            for (int j = 0; j < tableCells.size(); j++) {
+                XWPFTableCell xwpfTableCell = tableCells.get(j);
+                xwpfTableCell.setText(addList.get(i - 1)[j]);
             }
         }
     }

--
Gitblit v1.9.3