所屬欄目:計(jì)算機(jī)應(yīng)用論文 發(fā)布日期:2011-05-14 17:14 熱度:
摘要:許多機(jī)構(gòu)都使用微軟Excel表格作為信息交換的方式,眾多的非專業(yè)編程人員、商業(yè)分析師和項(xiàng)目經(jīng)理都能熟練的運(yùn)用該技術(shù)。而使用Java從Excel文檔中分析、搜集、鞏固數(shù)據(jù)的能力則證明是很有用途的。JakartaPOI(PoorObfuscationImplementation,無(wú)困惑實(shí)現(xiàn))使得程序員能夠迅速完成這些任務(wù)。POI可以用來(lái)完成在純Java中處理基于微軟OLE(對(duì)象鏈接和嵌入)技術(shù)的文件格式到復(fù)合文檔格式(如MicrosoftExcel,MicrosoftWord等軟件使用的格式)的交換。本文對(duì)POI進(jìn)行了剖析并說(shuō)明了如何使用Java讀寫MicrosoftExcel文檔,還提供了一個(gè)使用POI的實(shí)例。
關(guān)鍵詞:報(bào)表;Java;Excel;POI
1引言
微軟在系統(tǒng)桌面上的成功,令我們不得不大量使用它的辦公產(chǎn)品,如:Word,Excel。時(shí)至今日,它的源代碼仍然不公開已封鎖了我們的進(jìn)一步應(yīng)用和開發(fā)。然而在要求更高的服務(wù)器領(lǐng)域,微軟本身的產(chǎn)品移植性不好,性能不佳。在我們實(shí)際的開發(fā)中,表現(xiàn)層的解決方案雖然有多樣,但是IE瀏覽器已成為最多人使用的瀏覽器,因?yàn)榇蠹叶加肳indows。在企業(yè)辦公系統(tǒng)中,常常有客戶這樣的要求:你要把我們的報(bào)表直接用Excel打開。或者是:我們已經(jīng)習(xí)慣用Excel打印。這就看程序員能否為用戶提供一個(gè)便利的編輯打印Excel報(bào)表的功能。對(duì)此如果用.net開發(fā)是沒有問題的,但是有J2ee這個(gè)比.net更有前途的開放式的開發(fā)環(huán)境,難道我為了解決打印的要求去另寫客戶端的控件?或者在服務(wù)器端使用本地代碼?前者的問題是關(guān)鍵數(shù)據(jù)的處理有時(shí)候不能在客戶端做,后者的問題是犧牲了代碼的可移植性和穩(wěn)定性。如果讓客戶端只負(fù)責(zé)處理生成好的報(bào)表,那將是一種良好的選擇。這就面臨著新的挑戰(zhàn)——即利用Excel的強(qiáng)大功能對(duì)報(bào)表進(jìn)行再編輯潤(rùn)色。
2Java及其主要特點(diǎn)
Java是大家所熟悉的,它起源于80年代的中末期,仿效C和C++那樣設(shè)計(jì)出一種更簡(jiǎn)單、更有效、更容易使用的跨多種計(jì)算機(jī)平臺(tái)(硬件、操作系統(tǒng)等),可移植的通用語(yǔ)言。其特點(diǎn)主要有以下幾個(gè)方面:(1)通用性:指的是跨平臺(tái)、跨網(wǎng)絡(luò)、跨語(yǔ)種和跨時(shí)間。(2)可移植性:Java的源代碼是可移植的,而且對(duì)現(xiàn)有的幾乎所有操作系統(tǒng)無(wú)須修改便能運(yùn)行。(3)支持分布式環(huán)境。(4)Java虛擬機(jī)(JVM):這是一種軟CPU,是Java環(huán)境最重要的組件,它是仿照一種小巧高效的CPU設(shè)計(jì)的,Java的編譯器就是把Java的源代碼編譯成VM可執(zhí)行的偽目標(biāo)代碼,而偽目標(biāo)代碼轉(zhuǎn)換成實(shí)際的硬件調(diào)用。(5)Java本身就是一種虛擬操作系統(tǒng)和圖形用戶界面(GUI),它們也是可移植的。
3Java與Excel
使用Windows操作系統(tǒng)的朋友對(duì)Excel(電子表格)一定不會(huì)陌生,但是要使用Java語(yǔ)言來(lái)操縱Excel文件并不是一件容易的事。在Web應(yīng)用日益盛行的今天,通過Web來(lái)操作Excel文件的需求越來(lái)越強(qiáng)烈,目前較為流行的操作是在JSP或Servlet中創(chuàng)建一個(gè)CSV(commaseparatedvalues)文件,并將這個(gè)文件以MIME,text/csv類型返回給瀏覽器,接著瀏覽器調(diào)用Excel并且顯示CSV文件。這樣只是說(shuō)可以訪問到Excel文件,但是還不能真正的操縱Excel文件。在這里我們主要提到有兩種開源項(xiàng)目即:JavaExcel和POI,使用它們大家就可以方便地操縱Excel文件。JavaExcel這個(gè)開放源項(xiàng)目,通過它Java開發(fā)人員可以讀取Excel文件的內(nèi)容、創(chuàng)建新的Excel文件、更新已經(jīng)存在的Excel文件。使用該API,非Windows操作系統(tǒng)也可以通過純Java應(yīng)用來(lái)處理Excel數(shù)據(jù)表。因?yàn)槭鞘褂肑ava編寫的,所以我們?cè)赪eb應(yīng)用中可以通過JSP、Servlet來(lái)調(diào)用API實(shí)現(xiàn)對(duì)Excel數(shù)據(jù)表的訪問。另一種為了實(shí)現(xiàn)純Java的Excel解決方案是ApacheJakara推出了一個(gè)免費(fèi)的開源項(xiàng)目POI。POI目前已比較成熟,可以處理MSExcel(97-2002)對(duì)象。國(guó)內(nèi)已經(jīng)有部分公司在他們的辦公自動(dòng)化等Web項(xiàng)目中使用POI了。
4POI包在WEB開發(fā)中的應(yīng)用
如果要開發(fā)Eclipse插件式的信息應(yīng)用系統(tǒng),就肯定會(huì)涉及報(bào)表輸出。在開發(fā)中我們將報(bào)表輸出成Excel,這樣用戶就可以利用Excel的強(qiáng)大的功能對(duì)報(bào)表再編輯潤(rùn)色。
在Eclipse中,要和MSOffice交互需要用一個(gè)第三方庫(kù):即POI。它可以用于任何Java程序中(包括Web程序),而不僅僅是Eclipse。POI不是Eclipse的插件,而是幾個(gè)JAR包,其知識(shí)與插件無(wú)關(guān)。
4.1安裝與初始配置
POI可以到網(wǎng)站:http://jakarta.apache.org/下載,經(jīng)兩次解壓后將其復(fù)制Eclipse的myplugin2項(xiàng)目的根目錄下,緊接著要在Eclipse中設(shè)置對(duì)POI-2.5.1-final-20040804.jar的庫(kù)引用。需要注意的是:如果在插件項(xiàng)目中演示了第三方包,還必須在plugin.xml文件的<runtime>項(xiàng)中加入對(duì)此包的引用:代碼如下:
<runtime>
......
<libraryname="libPOI-2.5.1-final-20040804.jar"/>
</runtime>
如果系統(tǒng)中有幾種JRE,那么必須確保正確設(shè)置PATH環(huán)境變量,以調(diào)用1.4.2或更新版本的JRE,而非老版本的JRE。環(huán)境設(shè)置基本上就是兩個(gè)環(huán)境變量的設(shè)置:PATH和CLASSPATH。首先要正確設(shè)置CLASSPATH,以利用提供數(shù)據(jù)庫(kù)訪問和Excel電子表格功能的API。使用run.bat文件設(shè)置這一變量,這樣就可以訪問相應(yīng)的Java文檔(.jar文件)。
4.2創(chuàng)建一個(gè)空白的Excel文件
因?yàn)镻OI是通用于Java程序的API庫(kù),所以使用它并不需要在SWT/JFace或插件環(huán)境下,我們創(chuàng)建一個(gè)最普通的Java應(yīng)用程序即可。程序代碼如下:
//-----文件名:ExcelSample.java-----
publicclassExcelSample1{
publicstaticVoidmain(String[]args)throwsIOException{
//創(chuàng)建一個(gè)excel文件
HSSFWorkbooksb=newHSSFWorkbook();
FileOutputStreamfileOut=newFileOutputStream("c:\workbook.xls");
wb.write(fileOut);
fileOut.close();
}
}
說(shuō)明:
(1)FileOutStream創(chuàng)建和wb.write語(yǔ)句都需要用作異常處理,本例是選擇在main方法拋出其異常。
(2)FileOutStream屬于JDK的數(shù)據(jù)流對(duì)象,通過它來(lái)將一個(gè)名為workbook.xls文件創(chuàng)建在C盤目錄下,運(yùn)行該程序可看到C盤根目錄下多了一個(gè)Excel文件。
文章標(biāo)題:Java技術(shù)中Excel報(bào)表的應(yīng)用研究
轉(zhuǎn)載請(qǐng)注明來(lái)自:http://m.anghan.cn/fblw/dianxin/yingyong/8894.html
攝影藝術(shù)領(lǐng)域AHCI期刊推薦《Phot...關(guān)注:106
Nature旗下多學(xué)科子刊Nature Com...關(guān)注:152
中小學(xué)教師值得了解,這些教育學(xué)...關(guān)注:47
2025年寫管理學(xué)論文可以用的19個(gè)...關(guān)注:192
測(cè)繪領(lǐng)域科技核心期刊選擇 輕松拿...關(guān)注:64
及時(shí)開論文檢索證明很重要關(guān)注:52
中國(guó)水產(chǎn)科學(xué)期刊是核心期刊嗎關(guān)注:54
國(guó)際出書需要了解的問題解答關(guān)注:58
合著出書能否評(píng)職稱?關(guān)注:48
電信學(xué)有哪些可投稿的SCI期刊,值...關(guān)注:66
通信工程行業(yè)論文選題關(guān)注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關(guān)注:121
評(píng)職稱發(fā)論文好還是出書好關(guān)注:68
復(fù)印報(bào)刊資料重要轉(zhuǎn)載來(lái)源期刊(...關(guān)注:51
英文期刊審稿常見的論文狀態(tài)及其...關(guān)注:69
Web of Science 核心合集期刊評(píng)估...關(guān)注:59
電子信息論文范文
智能科學(xué)技術(shù)論文 廣播電視論文 光電技術(shù)論文 計(jì)算機(jī)信息管理論文 計(jì)算機(jī)網(wǎng)絡(luò)論文 計(jì)算機(jī)應(yīng)用論文 通信論文 信息安全論文 微電子應(yīng)用論文 電子技術(shù)論文 生物醫(yī)學(xué)工程論文 軟件開發(fā)論文
SCI期刊分析
copyright © m.anghan.cn, All Rights Reserved
搜論文知識(shí)網(wǎng) 冀ICP備15021333號(hào)-3