aQiu6 4 months ago
parent
commit
4fd73ab0dc
3 changed files with 19 additions and 3 deletions
  1. BIN
      jijinhui.docx
  2. 12 1
      pom.xml
  3. 7 2
      src/main/java/org/example/mybatisplus/tools/WordPoiExporter.java

BIN
jijinhui.docx


+ 12 - 1
pom.xml

@@ -48,6 +48,11 @@
             <artifactId>itextpdf</artifactId>
             <version>5.5.13.3</version>
         </dependency>
+        <dependency>
+            <groupId>com.itextpdf.tool</groupId>
+            <artifactId>xmlworker</artifactId>
+            <version>5.5.13.3</version>
+        </dependency>
         <!-- https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api -->
         <dependency>
             <groupId>jakarta.xml.bind</groupId>
@@ -86,7 +91,7 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-compress</artifactId>
-            <version>1.23.0</version>
+            <version>1.21</version>
         </dependency>
 
 
@@ -127,6 +132,12 @@
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-scratchpad</artifactId>
             <version>5.2.3</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.commons</groupId>
+                    <artifactId>commons-compress</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.apache.poi</groupId>

+ 7 - 2
src/main/java/org/example/mybatisplus/tools/WordPoiExporter.java

@@ -31,7 +31,7 @@ public class WordPoiExporter {
             FileOutputStream out = new FileOutputStream(path);
 
             doc.write(out);
-            //saveAsPdf(doc, pdfFilePath);
+            saveAsPdf(doc, pdfFilePath);
             out.close();
         } catch (Exception e) {
             e.printStackTrace();
@@ -55,6 +55,9 @@ public class WordPoiExporter {
             if (runText == null) continue;
             if (runText.indexOf("${")>-1 && runText.indexOf("${image")==-1){
                 System.out.println(runText);
+                if(runText.indexOf("}")==-1){
+                    continue;
+                }
                 //获取变量属性值
                 String key=runText.substring(runText.indexOf("${")+2,runText.indexOf("}"));
                 String[] keys=key.split(":");
@@ -103,17 +106,19 @@ public class WordPoiExporter {
                     for (XWPFParagraph p : cell.getParagraphs()) {
                         String text = p.getText();
                         if (text.contains("${tableRow:")) {
+                            tbl.removeRow(tbl.getRows().indexOf(row));
                             String key=text.substring(text.indexOf("${")+2,text.indexOf("}"));
                             String[] keys=key.split(":");
                             // 找到表格占位行
                             // 获取原行(这里选择第一行作为示例)
                             JSONObject obj = jsonObject.getJSONObject(keys[1]);
                             System.out.println(JSONObject.toJSONString(keys));
+                            if(obj==null)continue;
                             JSONArray tableData = obj.getJSONArray(keys[2]);
                             if (tableData != null && tableData.size() > 0) {
                                 addTableRows(tbl, tableData, row);
                             }
-                            tbl.removeRow(tbl.getRows().indexOf(row));
+
                         } else {
                             replaceTextWithFormat(p, jsonObject);
                         }