java操作word(利用xml模板)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class OperateXml {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
OperateXml ox = new OperateXml();
ox.operateXml();
}
public void operateXml() {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("D:/贷前核查输出模板.xml"));
Element element = document.getDocumentElement();
// 得到所有表格集合
NodeList tblList = element.getElementsByTagName("w:tbl");// w:t标签组
// 得到第一张表
Element tbl1 = (Element) tblList.item(0);
// 得到第一张表中所有行
NodeList rowList = tbl1.getElementsByTagName("w:tr");
for (int i = 1; i < rowList.getLength(); i++) {
Element rowNode = (Element) rowList.item(i);
// 得到这行的所有单元格
NodeList cellList = rowNode.getElementsByTagName("w:tc");
// 基于这次模版开始从每行的第二个单元格操作
for (int j = 1; j < cellList.getLength(); j++) {
if (j == 1) {
Element cellNode = (Element) cellList.item(j);
// 得到单元格底下的文本(p节点)
Element pNode = (Element) cellNode
.getElementsByTagName("w:p").item(0);
// 得到文本行
Element rNode = (Element) pNode.getElementsByTagName(
"w:r").item(0);
//如果有文本值,那么修改,没有则给p节点追加r节点
if (rNode != null) {
Node tNode = rNode.getElementsByTagName("w:t")
.item(0);
tNode.setTextContent(i+"-"+j);
} else {
Document parent = pNode.getOwnerDocument();
Element r = null;
Element t = null;
r = parent.createElement("w:r");
t = parent.createElement("w:t");
t.setTextContent(i+"-"+j);
pNode.appendChild(r);
r.appendChild(t);
}
}
}
}
saveXml("D:/贷前核查输出模板1.doc",document);
} catch (Exception ex) {
System.out.println("有误");
}
}
public static void saveXml(String fileName, Document doc) {//将Document输出到文件TransformerFactory transFactory=TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("indent", "yes");
DOMSource source=new DOMSource();
source.setNode(doc);
StreamResult result=new StreamResult();
result.setOutputStream(new FileOutputStream(fileName));
transformer.transform(source, result);
} catch (TransformerConfigurationException e){
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} catch (FileNotFoundException e){
e.printStackTrace();
}
}
}