java操作word可操作书签.docx

java操作word可操作书签.docx

ID:61766845

大小:204.16 KB

页数:4页

时间:2021-03-19

java操作word可操作书签.docx_第1页
java操作word可操作书签.docx_第2页
java操作word可操作书签.docx_第3页
java操作word可操作书签.docx_第4页
资源描述:

《java操作word可操作书签.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、最近有个需求,在word模板文档上设置书签,然后从数据库中查询数据,填充到word文档书签位置,刚拿到需求时,使劲在网上找资料。幻想第三方jar包,帮我实现。有Apatch的POI,java2word,jcob等,一直让我无法实现。POI操作word只能获取word中的书签,并不能进行操作.java2word可以实现,但是除了java2word.jar包以外,还要一个dll文件放在system32文件夹下,环境部署在linux服务器上,谁允许你放这样的文件,结果死心了.下面新建一个word2007文件告诉大家不用第三方技术怎么一一实现。现在新建

2、一个word,在请输入用户名处添加书签userName,请输入年龄处添加书签ageWord2007版本其实就是zip格式,将新建word后缀名改.zip,解压会发现,里面全是文件夹,打开word文件夹会有一个document.xml文件,在word所有内容,都在这xml文件中,请输入用户名

3、/>这是新建书签处的内容,细心的会发现,书签处内容在标签之间,标签中的w:id跟w:name标识书签的唯一,中间是书签处的内容,会不会可以这样呢,找到用dom或者sax解析这个xml文档找到标签,然后找到标签,再找到标签里面的标签内容,替换就Ok了呢。一开始我就这样想的。但是你会发现,不是这样配

4、套的,如果是这样配套的,那按照前面的说的直接解析找到标签就OK了。分析xml文件你会发现,其实标签跟标签是同级的,只是结束方式不同而已,所以算是兄弟节点,可以不可以找到的兄弟节点,也就是标签,然后找到标签,替换其文本。其实w3c中Element对象中提供了获取兄弟节点的方法,getNextSibling()获取下一个兄弟节点。按照分析的思路是可以实现的。但是会不会

5、有疑问,如果的下一个兄弟节点会不会不是标签呢,是的,如果书签处无内容,就会是这样的这样可以直接在后面直接添加标签你多试几个文档你会发现,无论多复杂,只要节操还在。都会是这个样子。除非那种非常恶心的word。这个还得看你的word模板而论.这样的思路是可以实现了,但是该怎么用java搞定呢,下面贴出代码publicstaticvo

6、idmodifyDocumentAndSave()throwsIOException,ZipException,SAXException,ParserConfigurationException,TransformerException,TransformerConfigurationException{//使用java.util打开文件Filefile=newFile("D:test.docx");booleanexist=file.exists();booleanread=file.canRead();booleanwrite=file.c

7、anWrite();System.out.println(exist);System.out.println(read);System.out.println(write);ZipFiledocxFile=newZipFile(file);//返回ZipEntry应用程序接口ZipEntrydocumentXML=docxFile.getEntry("word/document.xml");InputStreamdocumentXMLIS=docxFile.getInputStream(documentXML);DocumentBuilderF

8、actorydbf=DocumentBuilderFactory.newInstance();Documentdoc=dbf.newDocumentB

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。