使用poi动态替换word指定文本内容
2015-07-31 12:22
706 查看
这两天项目需要用到动态生成word文档,于是从网上查了各种资料。一种是通过poi来替换word指定内容的。具体java代码请百度。我这里直说我遇到的问题以及解决方案。
问题:指定文本被解析成了多个XWFPRun对象,比如${userName}被解析成了“${” + "userN" + "ame}" 导致想要替换的文本死活替换不了
分析:XWFPRun在word里代表具有相同属性的一段文本,所以我就用格式刷将要替换的文本全刷了一遍。结果——不行。继续百度(感谢中国有度娘)。网上另一种方式是frddmarker+xml来生成word。所以就想换一种实现方式。结果——柳暗花明。
解决方案:依然采用poi替换word中的指定文本。将创建的word模板另存为“XML”,使用文本编辑器(我直接用的eclipse)打开你会发现你要替换的文本(${userName})确实被拆分定义在了不同的<w:r标签中且属性不同,下面你要做的就是手动修改那个"XML”文件,然后保存为“docx”就可以了。
以下是我修改后的代码:
![](https://img-blog.csdn.net/20150731124350795?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
语言有些混乱。
问题:指定文本被解析成了多个XWFPRun对象,比如${userName}被解析成了“${” + "userN" + "ame}" 导致想要替换的文本死活替换不了
分析:XWFPRun在word里代表具有相同属性的一段文本,所以我就用格式刷将要替换的文本全刷了一遍。结果——不行。继续百度(感谢中国有度娘)。网上另一种方式是frddmarker+xml来生成word。所以就想换一种实现方式。结果——柳暗花明。
解决方案:依然采用poi替换word中的指定文本。将创建的word模板另存为“XML”,使用文本编辑器(我直接用的eclipse)打开你会发现你要替换的文本(${userName})确实被拆分定义在了不同的<w:r标签中且属性不同,下面你要做的就是手动修改那个"XML”文件,然后保存为“docx”就可以了。
以下是我修改后的代码:
语言有些混乱。
相关文章推荐
- 二、元素---上面板---调试面板
- maven学习(5)-maven中常见错误
- Clique in the Divisibility Graph
- 将博客搬至CSDN
- 浅复制 与 深复制的区别
- Delete Node in a Linked List Java LeetCode
- java子类构造器调用父类构造器初始化顺序
- CLRS第二章思考题
- 如何下载youtube上面的视频
- TestNG中case之间的依赖关系
- 号称最快android虚拟机的genymotion安装出现virtualization engine not found plugin loading aborted另外一个原因
- 组建一个互联网创业团队需要多少钱?
- 修改MySQL数据库字符编码为UTF-8解决中文乱码
- Install R-base 3.1.0 in Ubuntu 14.04
- HTML 对象属性 property value 与 attribute value
- 禁止滑动的ViewPager
- 二叉树算法总结
- 如何搭建一个独立博客——简明Github Pages与Hexo教程
- 首次登陆mysql,密码修改
- Shiro学习(6)Realm整合