首先来看docx版也就是2007版word
第一先遍历下文本内容
function docxWord(inputUrl) {
try {
// inputUrl为读取word模板路径
const url = Packages.org.apache.poi.POIXMLDocument.openPackage(inputUrl)
const doc = new Packages.org.apache.poi.xwpf.usermodel.XWPFDocument(url)
//整个文本
let allText = doc.getParagraphs();
//
//获取参数data属性
//替换文档
for (var i = 0; i < allText.size(); i++) {
let paragraph = allText.get(i)
let runs = paragraph.getRuns();
for (var g = 0; g < runs.size(); g++) {
let run = runs.get(g);
let runstr = run.toString();
//0待变从第一位开始替换
run.setText("替换的内容", 0);
}
}
}
//表格
let allTable = doc.getTables();
for (var i = 0; i < childTable.size(); i++) {
let xwpfTbale = childTable.get(i)
let rows = xwpfTbale.getRows();
for (var g = 0; g < rows.size(); g++) {
let xwpfTableRow = rows.get(g);
let cells = xwpfTableRow.getTableCells();
for (var q = 0; q < cells.size(); q++) {
let xwpfTableCell = cells.get(q);
//如果表格中还有表格需要有递归
//xwpfTableCell.getTbales 是获取当前子表格
//结束
let paragraphs = xwpfTableCell.getParagraphs();
for (var w = 0; w < paragraphs.size(); w++) {
let xwpfParagraph = paragraphs.get(w);
let runs = xwpfParagraph.getRuns();
for (var r = 0; r < runs.size(); r++) {
let run = runs.get(r);
let runstr = run.toString()
let reg = /\$\{(.+?)\}/g
run.setText("替换的内容", 0);
}
}
}
}
// }
}
}
let stream = new Packages.java.io.FileOutputStream(outinput)
doc.write(stream);
stream.close()
} catch{
}
}
再来看看doc版 2003版(简单的很)
try {
let fis = new Packages.java.io.FileInputStream(inputfill);
let doc = new Packages.org.apache.poi.hwpf.HWPFDocument(fis);
let out = new Packages.java.io.FileOutputStream(outinputfill);
let rang = doc.getRange();
//text是整个文档
let text = doc.getDocumentText();
rang.replaceText("要替换的内容","替换的内容");
//例如一个文档
// 快把我换了 快把我换了
//rang.replaceText("我","你")
// 就变成了 快把你换了 快把你换了
//表格中的文字也可以替换
doc.write(out);
out.close();
// fis.close();
} catch{
}