替换XWPFDocument表上的文本不起作用

问题描述

我正在尝试更改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 (将#修改为@)