Java POI 修改word中的内容
我想把word文档中的:<%800001%> 替换成 AAAAA
XWPFDocument document=new XWPFDocument(POIXMLDocument.openPackage("C:\Users\whx\Desktop\whx.docx"));
Iterator<XWPFParagraph> itPara =document.getParagraphsIterator();
while(itPara.hasNext()){
XWPFParagraph paragraph =itPara.next();
List<XWPFRun> runs=paragraph.getRuns();
for(int i = 0; i < runs.size(); i++){
XWPFRun run=runs.get(i);
String oneparaString = runs.get(i).getText(runs.get(i).getTextPosition());
System.out.println(oneParagString);
if(oneParagString!=null){
for(Map.Entry<String, String> entry:map.entrySet()){
if(oneParagString!=null&&oneParagString.contains(entry.getKey())){
oneParagString=oneParagString.replace(entry.getKey(), entry.getValue());
}
}
run.setText(oneParagString, 0);
}
}
}
//替换表格中的指定文字
Iterator<XWPFTable> itTable=document.getTablesIterator();
为什么:下面这行代码报数组下标越界的错误?
String oneparaString = runs.get(i).getText(runs.get(i).getTextPosition());
Exception in thread "main" java.lang.IndexOutOfBoundsException
at org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTRImpl.getTArray(Unknown Source)
at org.apache.poi.xwpf.usermodel.XWPFRun.getText(XWPFRun.java:281)
at com.axjy.entity.Test2.main(Test2.java:41)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可以试试xdoc模板引擎:http://www.xdocin.com
document.getRange().replace 可以替换,但是这样的话,不会保存word的格式。最后得到的是一个纯文本的word,以前word中的标题,字体大小,颜色,都会消失的。
我只是想替换原来word中的部分内容,其他的标题,字体,格式都不能改变的。
还有别的方法么?
试试 document.getRange().replace