Office文件格式突變?nèi)绾未偈笿ava和Office更完美集成-創(chuàng)新互聯(lián)

小編今天帶大家了解Office文件格式突變?nèi)绾未偈笿ava和Office更完美集成,文中知識(shí)點(diǎn)介紹的非常詳細(xì)。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內(nèi)容,希望能夠幫助更多想解決這個(gè)問題的朋友找到問題的答案,下面跟著小編一起深入學(xué)習(xí)“Office文件格式突變?nèi)绾未偈笿ava和Office更完美集成”的知識(shí)吧。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比大關(guān)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式大關(guān)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋大關(guān)地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

Office文件格式突變,促使Java和Office更完美集成

Office是大家非常熟悉的辦公軟件。它的強(qiáng)大的文字和表格的處理能力幾乎無人能敵。而其中的Excel除了被應(yīng)用在傳統(tǒng)的表格處理中,也常被廣大程序員“抓”來充當(dāng)報(bào)表系統(tǒng)的前端。如我們使用的Java Web程序,在后臺(tái)生成一個(gè)帶報(bào)表數(shù)據(jù)的Excel文件,然后將這個(gè)文件送到前臺(tái)瀏覽器(必須是IE),這樣這個(gè)Excel文件就可以嵌入到IE中。 

這樣處理報(bào)表既可以利用Excel強(qiáng)大的表格處理功能,又可以使程序員省了很多的麻煩。但這么做有一個(gè)限制。就是服務(wù)器的Java生成Excel報(bào)表時(shí),一般不會(huì)使用COM來調(diào)用Excel組件,而是按著Excel文件的二進(jìn)制格式直接生成Excel文件。但由于Office是商業(yè)軟件,微軟并沒有將 Office的文件格式完全公開(就算公開,也不是最新版本的),這樣就給生成Excel文件帶來了一定的困難。雖然一些比較新的Office文檔可以保存成XML格式,但這種文件格式只是一種簡陋的替代,再說前端的IE并不認(rèn)XML格式的Excel文檔。也許是微軟意識(shí)到了這個(gè)問題,在新推出的 Office2007中徹底解決了這個(gè)問題。

在以前老版本Office中,由于法律或技術(shù)原因,脫離Office來處理Office文檔將會(huì)遇到非常多的問題。也許是開源給微軟帶來的壓力,或許是其他的原因,微軟對(duì)Office2007的格式做了和以前完全不同的處理。以前的 Office文檔是100%的二進(jìn)制格式。第三方的工具操作起來非常不方便,而Office2007從整體上都是基于XML格式的,這里并不是說 Office2007文檔可以保存成XML格式。而是Office2007默認(rèn)的文檔格式就是XML的(Word的docx、Excel的xlsx等)。也許有人會(huì)感到奇怪,用文本編輯器打開docx后,顯示的仍然是二進(jìn)制格式,并不是什么XML。其實(shí)docx并不是普通的XML格式,當(dāng)然,也不只是一個(gè) XML文件,docx本質(zhì)上是一個(gè)zip文件,里面有一系列的xml、目錄和其他的文件。如果我們將docx改成zip。就可以用winzip等軟件將其解開(從這一點(diǎn)我們可以看出,docx中的x就是指XML)。

目錄中的XML都是基于OpenXML格式的,這個(gè)規(guī)范微軟已經(jīng)提供提交給了ECMA,因此,這已經(jīng)成為公共的標(biāo)準(zhǔn),我們可以自由地使用它們。由于Office2007文檔全部使用了壓縮的xml格式,因此,只有支持讀取zip 格式和xml格式的語言都可以操作Office2007的文檔,當(dāng)然,Java也不例外。而使用Java和Office聯(lián)合操作報(bào)表將更加容易。在本文中將演示如何使用Java來操作Office2007的文檔,這里以word2007為例。

我們將這個(gè)文檔保存為test.docx。注意,不要保存成向后兼容的word文檔格式,也不要保存成Office2003或更好的Office的WordML格式。這個(gè)文檔將是一個(gè)壓縮的zip格式,如果將test.docx改成test.zip。 

從上面解開的文件結(jié)構(gòu)可以非常清楚地了解test.docx的保存結(jié)構(gòu)。在Java中我們可以使用java.util.zip包來解開test.docx。從這個(gè)目錄結(jié)構(gòu)我們可以很容易地猜出文檔的主要內(nèi)容保存在document.xml中。而其他的xml文件將保存不同的信息。如字體信息將保存在 fontTable.xml中,而Office主題將保存在theme.xml和theme1.xml中。

下面我們開使使用Java對(duì)這個(gè)文件進(jìn)行操作。首先我們使用JUnit4來確定test.docx是否存在,以及是否可以對(duì)其進(jìn)行讀寫,代碼如下:

@Test public void verifyFile()

...{

assertTrue(new File("test.docx").exists()); 

assertTrue(new File("test.docx").canRead()); 

assertTrue(new File("test.docx").canWrite()); 

}

下面的代碼將簡單地驗(yàn)證

java.util.zip.ZipFile

類是否可以打開

test.docx

。

@Test public void openFile() throws IOException, ZipException

...{

ZipFile docxFile = new ZipFile(new File("test.docx")); 

assertEquals(docxFile.getName(), "test.docx"); 

}

經(jīng)過測試,ZipFile完全可以操作test.docx。看來很多人都迫不急待了,下面就讓我們來從test.docx中來讀取數(shù)據(jù)吧。首先應(yīng)該打開document.xml文件。代碼如下:

Test public void listContents() throws IOException, ZipException

...{

boolean documentFound = false; 

ZipFile docxFile = new ZipFile(new File("test.docx")); 

Enumeration entriesIter = docxFile.entries(); 

while (entriesIter.hasMoreElements())

...{

ZipEntry entry = entriesIter.nextElement(); 

if(entry.getName().equals("document.xml"))

documentFound = true; 

}

assertTrue(documentFound); 

}

但是運(yùn)行上面的代碼將拋出一個(gè)異常,好象說明document.xml并不存在,事實(shí)上并不是如此。而是ZipFile API需要一個(gè)完整的文件或目錄名,因此,需要將上面的路徑變成word/document.xml。 

下一步我們將通過

ZipFile

得到一個(gè)

ZipEntry

對(duì)象,并通過這個(gè)對(duì)象來看看

xml

中有什么,代碼如下:

@Test public void getDocument() throws IOException, ZipException

...{

ZipFile docxFile = new ZipFile(new File("test.docx")); 

ZipEntry documentXML = docxFile.getEntry("word/document.xml"); 

assertNotNull(documentXML); 

}

感謝大家的閱讀,以上就是“Office文件格式突變?nèi)绾未偈笿ava和Office更完美集成”的全部內(nèi)容了,學(xué)會(huì)的朋友趕緊操作起來吧。相信創(chuàng)新互聯(lián)小編一定會(huì)給大家?guī)砀鼉?yōu)質(zhì)的文章。謝謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!

分享題目:Office文件格式突變?nèi)绾未偈笿ava和Office更完美集成-創(chuàng)新互聯(lián)
URL鏈接:http://muchs.cn/article22/cocpjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、營銷型網(wǎng)站建設(shè)定制開發(fā)、動(dòng)態(tài)網(wǎng)站、云服務(wù)器網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)