java用poi实现对word读取和修改操作
新增WordUtil类,将代码拷进去直接运行即可
package com.cjhxfund.ats.fm.instr;
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 java.util.Set;
import org.apache.poi.POIXMLDocument;
import ermodel.XWPFDocument;
import ermodel.XWPFParagraph;
import ermodel.XWPFRun;
import ermodel.XWPFTable;
import ermodel.XWPFTableCell;
import ermodel.XWPFTableRow;
public class WordUtil {
public static void searchAndReplace(String srcPath, String destPath,
Map<String, String> map) {
try {
XWPFDocument document = new
XWPFDocument(POIXMLDocument.openPackage(srcPath));
// 替换段落中的指定文字
Iterator<XWPFParagraph> itPara =
document.getParagraphsIterator();
while (itPara.hasNext()) {
XWPFParagraph paragraph = (XWPFParagraph) itPara.next();
//String s = paragraph.getParagraphText();
Set<String> set = map.keySet();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
List<XWPFRun> runs=paragraph.getRuns();
for (XWPFRun run : runs) {
String text = run.getText(0);
if(text != null){
//String runText = run.toString();
if(text.indexOf(key) != -1){
text = text.replace(key, map.get(key));
System.out.println("key=="+key+"~~~~runText=="+text);
run.setText(text,0);
}
}
}
}
}
// 替换表格中的指定文字
Iterator<XWPFTable> itTable =
document.getTablesIterator();
while (itTable.hasNext()) {
XWPFTable table = (XWPFTable) itTable.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(destPath);
document.write(outStream);
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
Map<String, String> map = new HashMap<String, String>();
map.put("附件", "文件");
map.put("结果", "结束");
//map.put("金额", "数量");
String srcPath = "D:\\10\\测试java读取【word】文档内容
_V1.0.doc";
String destPath = "D:\\10\\out.doc";
searchAndReplace(srcPath, destPath, map);
}
}。