• 大小: 11.84MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-22
  • 语言: Java
  • 标签: word合并  

资源简介

java运用poi操作word,替换word中的占位符填充数据,并将多个word合并成一个word,附件是java代码和相关jar包,以及测试模板,需要注意是,只适用2007以上的word

资源截图

代码片段和文件信息

package com.cn.gwssi.demo;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Set;

import org.apache.commons.io.IOUtils;
import org.apache.poi.POIxmlDocument;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.xmlbeans.xmlOptions;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;


/**
 * 对word模板填充数据,并合并成一个word
 */
public class POIMergeDocUtil {

public static void main(String[] args) throws Exception {
List paths = new ArrayList();
paths.add(“d:\\1.docx“);
paths.add(“d:\\2.docx“);
paths.add(“d:\\3.docx“);
   
Map param = new  HashMap();
param.put(“kprq“ “2018-05-09“);
param.put(“skrq“ “2018-05-01“);
param.put(“fpbm“ “Bluesky 25-18-R001“);

String destDocx = “d:\\test.docx“;

exportWordUtils(pathsparamdestDocx);
System.out.println(“执行成功=====“);
}

/**
 * 对多个word模板填充数据,并合并成一个word输出
 * @param paths
 * @param param
 * @param destDocx
 * @throws Exception
 */
public static void exportWordUtils(List pathsMap paramString destDocx) throws Exception{
   OutputStream dest = null;
   List xwpfDocuments = new ArrayList();
   //循环向word填充数据
   for (String path : paths) {
   XWPFDocument xwpfDocument = generateWord(parampath);
   xwpfDocuments.add(xwpfDocument);
   }
   
   //合并word
   XWPFDocument xwpfDocument = xwpfDocuments.get(0);
   for (int i = 1; i < xwpfDocuments.size(); i++) {
   xwpfDocument=mergeWord(xwpfDocumentxwpfDocuments.get(i));
   }
   
   //输出word
   dest = new FileOutputStream(destDocx);
   xwpfDocument.write(dest);
   
   IOUtils.closeQuietly(dest);
   }
   /**
    * 替换word占位符的内容
    * @param param
    * @param filePath
    * @return
    */
   public static XWPFDocument generateWord(Map param String filePath) {
   XWPFDocument doc = null;
   try {
   doc = new XWPFDocument(POIxmlDocument.openPackage(filePath));
   if (param != null && param.size() > 0){
   //处理段落
   replaceInPara(doc param);
   //替换表格里面的变量
   replaceInTable(doc param);
   }
   } catch (Exception e) {
   e.printStackTrace();
   }
   return doc;
   }
   
   /**
 * 遍历word段落信息
 * @param doc 要替换的文档
 * @param params 参数
 */
private stati

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         954  2019-01-15 14:55  poitest\.classpath
     文件         383  2019-01-14 15:55  poitest\.project
     文件         629  2019-01-14 16:11  poitest\.settings\org.eclipse.jdt.core.prefs
     文件       10706  2019-01-15 18:39  poitest\bin\com\cn\gwssi\demo\POIMergeDocUtil.class
     文件      109043  2019-01-14 17:17  poitest\lib\commons-io-1.4.jar
     文件     2619573  2019-01-14 15:58  poitest\lib\poi-3.16-beta2.jar
     文件      369259  2019-01-14 15:58  poitest\lib\poi-examples-3.16-beta2.jar
     文件       31065  2019-01-14 15:58  poitest\lib\poi-excelant-3.16-beta2.jar
     文件     1384781  2019-01-14 15:58  poitest\lib\poi-ooxml-3.16-beta2.jar
     文件     5873588  2019-01-14 15:58  poitest\lib\poi-ooxml-schemas-3.16-beta2.jar
     文件     1367466  2019-01-14 15:58  poitest\lib\poi-scratchpad-3.16-beta2.jar
     文件       73441  2019-01-14 16:09  poitest\lib\poi-tl-1.3.0.jar
     文件        8870  2019-01-15 14:54  poitest\lib\slf4j1.7.7.jar
     文件     2666695  2019-01-14 17:15  poitest\lib\xmlbeans-2.3.0.jar
     文件       10737  2019-01-15 18:39  poitest\src\com\cn\gwssi\demo\POIMergeDocUtil.java
     文件       14655  2019-01-15 19:49  test.docx
     文件       15634  2019-01-15 19:41  1.docx
     文件       15261  2019-01-15 19:48  2.docx
     文件       15248  2019-01-15 19:48  3.docx

评论

共有 条评论