JAVA获取word书签内容_java操作word可操作书签
最近有個需求,在word模板文檔上設(shè)置書簽,然后從數(shù)據(jù)庫中查詢數(shù)據(jù),填充到word 文檔書簽位置,剛拿到需求時,使勁在網(wǎng)上找資料?;孟氲谌絡(luò)ar包,幫我實現(xiàn)。有Apatch 的POI,java2word,jcob等,一直讓我無法實現(xiàn)。POI操作word只能獲取word中的書簽,并不能進行操作.java2word可以實現(xiàn),但是除了java2word.jar包以外,還要一個dll文件放在system32文件夾下,環(huán)境部署在linux服務(wù)器上,誰允許你放這樣的文件,結(jié)果死心了.下面新建一個word2007文件告訴大家不用第三方技術(shù)怎么一一實現(xiàn)。
現(xiàn)在新建一個word,在請輸入用戶名處添加書簽userName,請輸入年齡處添加書簽age
Word2007版本其實就是zip格式,將新建word后綴名改.zip,解壓會發(fā)現(xiàn),里面全是文件夾,打開word文件夾會有一個document.xml文件,在word所有內(nèi)容,都在這xml文件中,
請輸入用戶名
這是新建書簽處的內(nèi)容,細心的會發(fā)現(xiàn),書簽處內(nèi)容在 標(biāo)簽之間,標(biāo)簽中的w:id跟w:name標(biāo)識書簽的唯一,中間是書簽處的內(nèi)容,會不會可以這樣呢,找到用dom或者sax解析這個xml 文檔找到標(biāo)簽,然后找到標(biāo)簽,再找到標(biāo)簽里面的標(biāo)簽內(nèi)容,替換就Ok了呢。一開始我就這樣想的。但是你會發(fā)現(xiàn),不是這樣配套的,如果是這樣配套的,那按照前面的說的直接解析找到標(biāo)簽就OK了。
分析xml文件你會發(fā)現(xiàn),其實標(biāo)簽跟標(biāo)簽是同級的,只是結(jié)束方式不同而已,所以算是兄弟節(jié)點,可以不可以找到的兄弟節(jié)點,也就是標(biāo)簽,然后找到標(biāo)簽,替換其文本。其實w3c中Element對象中提供了獲取兄弟節(jié)點的方法,getNextSibling()獲取下一個兄弟節(jié)點。按照分析的思路是可以實現(xiàn)的。但是會不會有疑問,如果的下一個兄弟節(jié)點會不會不是標(biāo)簽?zāi)?#xff0c;是的,如果書簽處無內(nèi)容,就會是這樣的
總結(jié)
以上是生活随笔為你收集整理的JAVA获取word书签内容_java操作word可操作书签的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java安装后在哪里打开_java安装后
- 下一篇: KL散度、JS散度、Wasserstei