关键词不能为空

当前您在: 主页 > 英语 >

java操作word书签生成word模板不用jar包

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 03:06
tags:

-

2021年2月28日发(作者:homa)



java


操作


wor d


书签生成


word


模板


(


不用


jar


< p>
)


最近有个需求,



w ord


模板文档上设置书签,


然后从数据库中查询数据,


填充到


word


文档书签位置


,


刚拿到需求时,使劲在网上找资料。幻想第三方


ja r


包,帮我实现。有


Apatch


的< /p>


POI,java2word,jcob


等,一直让我无法实现。


POI


操作


word

< br>只能获取


word


中的书签,并


不能进行操作


.java2word


可以实现,但是除了



包以外,还要一个


dll

文件放在


system32


文件夹下


,


环境部署在


linux


服务器上,


谁允许你放这样的文件,


结果死心了


.


下面新


建一个


word2007


文件告诉大家不用第三方技术怎么一一实现。



现在新建一个


word,


在请输入用户名处添加书签


userName,


请输入年龄处添加书签


ag e



Word2007


版本其实就是


zip


格式,将新建


word


后缀名改


.zip,


解压会发现,里面全是文< /p>


件夹


,


打开


wo rd


文件夹会有一个



文件,

< p>


word


所有内容,


都 在这


xml


文件中


,











请输入用户名






这是新建书签处的 内容,细心的会发现,书签处内容在




标签之间,



标签中的


w:id



w:name


标识


书签的唯一,中间是书签处的内容,会不会可以这样呢,找到用


dom


或者


sax


解析这个

< br>xml


文档找到



标签,然后找到



标签,再找 到



标签里面的


< /p>


标签








Ok





< p>

















不是这样配套 的,如果是这样配套的,那按照前面的


说的直接解析找到



标签就


OK

了。



分析


xml


文件你会发现,其实


w:id=


w:name=


标签跟



标签是同级的,只是结束方式不同而已,所以算是兄弟节点,可以不可以找到



的兄弟节点,也就是



标签,然后找到



标签,替换其文本。其实


w3c



Element


对象中提供了获取兄弟节点的方法,

getNextSibling()


获取下一个兄弟节点。


按照分析的思路是可以实现的。但是会不会有疑问,如果



的下一个兄弟节


点会不会不是



标签呢,是的,如果书签处无内容,就会是这样的







这样可以直接在



后面直接添加



标签



你多试几个文档你会发现,无论多复杂,


只要节操还在。


都会是这个样子。


除非那种非常恶


心的


word


。这个还得看你的


word


模板而论


.


这样的思路是可以实现了,但是该怎么用


java


搞定呢,下面贴出代码



publicstaticvoid


modifyDocumentAndSave()


throws



IOException,





ZipException, SAXException,


ParserConfigurationException,





TransformerException,


TransformerConfigurationException {






















//


使用



打开文件



File file=


new


File(



);


boolean


exist=();


boolean


read=d();


boolean


write=te();

< br>System.


out


.println(exist) ;


System.


out


.prin tln(read);


System.


out


.println(write);


ZipFile docxFile =


new


ZipFile(file);


//


返回


ZipEntry


应用程序接口





ZipEntry documentXML =


ry(



);





InputStream documentXMLIS =


utStream(documentXML);





DocumentBuilderFactory dbf =


DocumentBuilderFactory.


newInstance


();





Document doc =


umentBuilder().parse(documentXMLIS);





// linkMan tel proCode companyName fundName fundCode


sysProCode





Map


String>


bookMarkMap


=


new



HashMap


String>();




-


-


-


-


-


-


-


-



本文更新与2021-02-28 03:06,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/678133.html

java操作word书签生成word模板不用jar包的相关文章