//有一word文档表格
//形如:
//姓名 ${name}
//电话 ${tel}
//从数据库读取记录替换上述变量
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<String,String> 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<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 {
HashMap map=new HashMap();
map.put("${name}", "王五");
map.put("${tel}", "8886666");
String srcPath = "c:\\1.docx";
String destPath = "c:\\2.doc";
searchAndReplace(srcPath ,destPath,map);
}
}