package com.poi.demo.word;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
/**
* 自己测试貌似只适用于word中插入表格内使用
* 模版必须是.docx格式文件
* @author longfeisun
*
*/
public class DOCXWriter {
public static void main(String[] args) {
String rootPath=System.getProperty("user.dir");
Map<String, String> map = new HashMap<String, String>();
map.put("${name}", "李四");
map.put("${tel}", "8886666");
String srcPath = rootPath + File.separator + "file" + File.separator + "1.docx";
String targetPath = rootPath + File.separator + "file" + File.separator + "2.doc";
searchAndReplace(srcPath, targetPath, map);
}
public static void searchAndReplace(String srcPath, String targetPath,
Map<String, String> map) {
try {
XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(srcPath));
Iterator<XWPFTable> it = document.getTablesIterator();
while (it.hasNext()) {
XWPFTable table = (XWPFTable) it.next();
int rcount = table.getNumberOfRows();
for (int i = 0; i < rcount; i++) {
XWPFTableRow row = table.getRow(i);
List<XWPFTableCell> cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
for (Entry<String, String> e : map.entrySet()) {
if (cell.getText().equals(e.getKey())) {
cell.removeParagraph(0);
cell.setText(e.getValue());
}
}
}
}
}
FileOutputStream outStream = null;
outStream = new FileOutputStream(targetPath);
document.write(outStream);
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
poi操作word(一)
最新推荐文章于 2019-03-22 11:34:35 发布