import com.fasterxml.jackson.databind.exc.InvalidFormatException;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
/**
* 专门用来处理 word 文档的工具类
*
* @author Mr Liu·EnXiang
* @version 1.0
*/
public class WordUtil extends XWPFDocument {
public static void generateWord(Map<String, Object> param, String fileSrc, String fileDest) {
XWPFDocument doc = null;
OPCPackage pack = null;
try {
pack = POIXMLDocument.openPackage(fileSrc);
doc = new XWPFDocument(pack);
if (param != null && param.size() > 0) {
// 处理段落
List<XWPFParagraph> paragraphList = doc.getParagraphs();
processParagraphs(paragraphList, param);
}
} catch (Exception e) {
e.printStackTrace();
}
FileOutputStream fopts = null;
try {
fopts = new FileOutputStream(fileDest);
doc.write(fopts);
// pack.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
closeStream(fopts);
}
}
public static void closeStream(FileOutputStream fopts) {
try {
fopts.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 处理段落,替换关键字
*
* @param paragraphList
* @throws FileNotFoundException
* @throws InvalidFormatException
*/
public static void processParagraphs(List<XWPFParagraph> paragraphList, Map<String, Object> param)
throws InvalidFormatException, FileNotFoundException {
if (paragraphList != null && paragraphList.size() > 0) {
// 遍历所有段落
for (XWPFParagraph paragraph : paragraphList) {
List<XWPFRun> runs = paragraph.getRuns();
for (XWPFRun run : runs) {
String text = run.getText(0);
// System.out.println("text==" + text);
if (text != null) {
boolean isSetText = false;
for (Entry<String, Object> entry : param.entrySet()) {
String key = entry.getKey();
if (text.equals(key)) {// 在配置文件中有这个关键字对应的键
isSetText = true;
Object value = entry.getValue();
if (value instanceof String) {// 文本替换
// System.out.println("key==" + key);
if (text.contains(key)) {
text = text.replace(key, value.toString());
}
}
}
}
if (isSetText) {
run.setText(text, 0);
}
}
}
}
}
}
}
<!--poi-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.11</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.9</version>
</dependency>