关于java poi读取word段落内容疑问
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); //分段是poi来完成的,但是它分段的时候可能出现${CJ_CP}${CL_LX}这种情况 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()); //FIXME 图片替换代码删掉了 break; } } } if(isSetText){ run.setText(text,0); } } } } } }
造成两次段落内容分割不同的情况我大致知道,word2每一行纯手打,word1复制过来的。但是有时候纯手打也会出现一个替换字符分行,或者多个替换字符在一行的情况。例如${AAA}${BBB} 被解析成了一个段落。
求大神,这个问题困惑了很久。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我也遇到这个问题 拆分错了 没法替换 楼主解决了说一下
https://github.com/Sayi/poi-tl 源码在这里。
。。。图片替换被你删掉了,顺便问下,每次图片都在文档最后..
引用来自“xdoc_osc”的评论
xdoc是取到后合并了,转成了自己的格式,有兴趣可以看看:
http://xdoc.aliapp.com
引用来自“xdoc_osc”的评论
我也遇到过,这种情况普遍存在,word目标是显示,不是数据处理
我也遇到过,这种情况普遍存在,word目标是显示,不是数据处理