資源簡介
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? ???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-ooxm
?????文件?????5873588??2019-01-14?15:58??poitest\lib\poi-ooxm
?????文件?????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\xm
?????文件???????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
- 上一篇:Simulate_2.0.apk
- 下一篇:Android 視頻直播Demo
評論
共有 條評論