POI读取word内容的疑问

发布于 2022-09-02 00:04:27 字数 2259 浏览 17 评论 0

两片内容相同的word,poi分割成XWPFRun集合的时候,发现相同的段落内容有空行。

图片描述

word1打印的段落内容

图片描述

word2打印的段落内容

图片描述

代码如下

/**
  替换段落中的内容
  @param paragraphList  段落集合
  @param param          要替换的内容map集合
  @param doc            CustomXWPFDocument对象
 */
    public static void processParagraphs(List<XWPFParagraph> paragraphList,Map<String, Object> param,CustomXWPFDocument doc){
    if(paragraphList != null && paragraphList.size() > 0){
        for(XWPFParagraph paragraph:paragraphList){
            List<XWPFRun> runs = paragraph.getRuns();  //段落集合
            for (XWPFRun run : runs) {
                String text = run.getText(0);          //段落内容                                                             
                System.out.println("text---->"+text);
                if(text != null){
                    boolean isSetText = false;
                    for (Entry<String, Object> entry : param.entrySet()) {
                        String key = entry.getKey();
                        if(text.indexOf(key) != -1){
                            isSetText = true;
                            Object value = entry.getValue();
                            if (value instanceof String) {//文本替换
                                text = text.replace(key, value.toString());                                         
                                break;
                            }
                        }
                    }
                    if(isSetText){
                        run.setText(text,0);
                    }
                }
            }
        }
    }
}

造成两次段落内容分割不同的情况我大致知道,word2每一行纯手打,word1复制过来的。但是有时候纯手打也会出现一个替换字符分行,或者多个替换字符在一行的情况。例如${AAA}${BBB} 被解析成了一个段落。

图片描述

求大神,这个问题困惑了很久。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不即不离 2022-09-09 00:04:27

这个问题我也有遇到过,后来放弃使用XWPFRun了,换用别的方法

真心难拥有 2022-09-09 00:04:27

其实可以用另一种思路来做,就是先把para的text取出来,遍历map,把text里该替换的全部替换好,然后把runs里前面所有的text都换成空,把最后一个run的text换成替换后的para的text 就ok了

梨涡 2022-09-09 00:04:27

docx存储就是这样的,中间还可能有别的元素,模板替换可以试试XDOC,http://www.xdocin.com/office....

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文