POI 替换word2003 页眉页脚中的内容
用POI 替换word(2003)中模板标签的时候遇到了问题,请教各位是否也遇到过? 怎么解决的?
测试的文件中:页眉: 测试页面{header} 页脚: 测试页脚{footer}
测试的代码如下:
public class TestClass { public static void main(String[] args) throws Exception { Map<String, String> tags = new HashMap<String, String>() {{ put("header", "page header"); put("footer", "page footer"); }}; HWPFDocument doc = new HWPFDocument(new POIFSFileSystem(new FileInputStream("e:\test1.doc"))); // getHeaderStoryRange 获取到的内容包括:页眉、页脚 Range range= doc.getHeaderStoryRange(); for (Map.Entry<String, String> entry : tags.entrySet()) { range.replaceText("{" + entry.getKey() + "}", entry.getValue()); } //? 1. 测试中发现只要替换的值和文件中标签长度不一致就会导致页眉页脚错乱(比如页脚跑到页眉了,或者页眉有部分跑到页脚了) //? 2. 用于获取页脚的代码 doc.getFootNoteRange() 取不到内容 OutputStream os = new FileOutputStream("e:\write.doc"); doc.write(os); os.close(); } }
1. 测试中发现只要替换的值和文件中标签长度不一致就会导致页眉页脚错乱(比如页脚跑到页眉了,或者页眉部分内容跑到页脚了)
2. 本想用 doc.getFootNoteRange() 替换也就,发现取不到内容
注: 只是 word 2003 格式
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
不行的话只能用
JACOB 试试了
我也是这个情况,图片显示不出来了
没找到解决办法,用了 jacob调用 vba替换了。但执行效率是问题……
但是jacob需要依赖office,如果服务器不允许安装office就无法使用…………
回复
由于不能依赖office,我最终选用了调用openOffice的API完成功能,但是当存在较为复杂的页眉页脚时,转换后的分页效果会有点问题,经检查发现是openOffice的功能造成……
回复
换 liberoffice 试试,比openoffice效果好
@________- 我试一下,thx
关注一下,遇到了同样的问题,替换后会造成页眉页脚的位置错位,如果替换的内容长度过长则出现了页码错误