问题描述
我正在尝试更改Cell段落中的运行文本,该段落包含一个我仅为更改而设置的标志。
try {
XWPFDocument doc = new XWPFDocument(new FileInputStream(docOut));
int prevYear = getYear()-1;
int nextYear = getYear()+1;
XWPFTable t = getTablesList(docOut).get(0);
XWPFTableCell r0c1 =t.getRow(0).getCell(1);
System.out.println(r0c1.getParagraphs().get(0).getText());
replaceTable(t,genMap("lastYearSlash",prevYear+"/"+getYear()));
System.out.println(r0c1.getParagraphs().get(0).getText());
doc.write(new FileOutputStream(docOut));
System.out.println("Saved to: "+docOut.getPath());
} catch (FileNotFoundException ex) {
Logger.getLogger(DocHelper.class.getName()).log(Level.SEVERE,null,ex);
} catch (IOException ex) {
Logger.getLogger(DocHelper.class.getName()).log(Level.SEVERE,ex);
}
当我打印该单元格的文本值时,它实际上显示了其变化方式,但是,在写入文档后,没有任何变化。
函数 genMap 只是生成一个哈希图,其中包含占位符值(我设置的标志)以及将替换它的值。这是函数 replaceTable :
for (XWPFTableRow row : table.getRows()) {
for (XWPFTableCell cell : row.getTableCells()) {
for(XWPFParagraph p:cell.getParagraphs()){
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null && text.contains(m.get("a").toString())) {
text = text.replace(m.get("a").toString(),m.get("b").toString());
r.setText(text,0);
}
}
}
}
}
}
我使用了一个非常相似的函数来查找和替换文档中的文本,但是在表的外部,它可以正常工作(我正在谈论的函数是完全相同的,但是它读取文档的所有段落,而不是单元格。)
有人可以帮助我吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)