package demo;
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;
public class DocWriter {
public static void searchAndReplace(String srcPath, String destPath,
Map map) {
try {
XWPFDocument document = new XWPFDocument(POIXMLDocument
.openPackage(srcPath));
Iterator 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 cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
for (Entry e : map.entrySet()) {
String key = e.getKey();
String text = cell.getText();
String value = e.getValue();
System.out.println(text);
System.out.println(key);
System.out.println(value);
if (cell.getText().equals(e.getKey())) {
cell.removeParagraph(0);
cell.setText(e.getValue());
}
}
}
}
}
FileOutputStream outStream = null;
outStream = new FileOutputStream(destPath);
document.write(outStream);
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
HashMap map = new HashMap();
map.put("${m}", "王五");
map.put("${n}", "8886666");
map.put("${t}", "666");
String srcPath = "D:\\01.docx";
String destPath = "D:\\2.docx";
searchAndReplace(srcPath, destPath, map);
}
}