管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2023-02-10 014639637a80b0549cc0aee00b9a9670fb57827c
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,15 +13,23 @@
 * @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 {
    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);
        // 获取docx解析对象
        XWPFDocument xwpfDocument = new XWPFDocument(inputStream);
        // 处理所有文段数据,除了表格
            if (null != insertTextMap && insertTextMap.size() > 0) {
        handleParagraphs(xwpfDocument, insertTextMap);
            }
        // 处理表格数据
        handleTable(xwpfDocument, insertTextMap, addList);
@@ -30,6 +38,9 @@
        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,7 +70,21 @@
            }
            if (isReplacement(table.getText())) {
                // 替换数据
                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) {
@@ -68,14 +93,18 @@
                            for (XWPFParagraph paragraph : paragraphs) {
                                List<XWPFRun> runs = paragraph.getRuns();
                                for (XWPFRun run : runs) {
                                    run.setText(matchesValue(tableCell.getText(), insertTextMap), 0);
                            run.setText(matchesValue(tableCell.getText(), map), 0);
                                }
                            }
                        }
                    }
                }
            } else {
                // 插入数据
    }
    /**
     * 插入数据
     */
    private static void insertData(XWPFTable table,List<String[]> addList) {
                for (int i = 1; i < addList.size(); i++) {
                    XWPFTableRow row = table.createRow();
                }
@@ -87,8 +116,6 @@
                    for (int j = 0; j < tableCells.size(); j++) {
                        XWPFTableCell xwpfTableCell = tableCells.get(j);
                        xwpfTableCell.setText(addList.get(i - 1)[j]);
                    }
                }
            }
        }
    }