poi读写word模板 / java生成word文档

有一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);
    }
}

以上方法,直接考入导入包后直接可运行

本文转自:http://www.geekcome.com/content-10-3567-1.html

原文地址:https://www.cnblogs.com/dreammyle/p/4606846.html