【摘 要】為減輕對(duì)創(chuàng)業(yè)指導(dǎo)老師的工作負(fù)擔(dān),并及時(shí)自動(dòng)地跟蹤和考核學(xué)生創(chuàng)業(yè)業(yè)績,義烏工商職業(yè)技術(shù)學(xué)院基于JAVA開發(fā)了一個(gè)系統(tǒng),就JXL在創(chuàng)業(yè)業(yè)績考核系統(tǒng)中的研究與應(yīng)用進(jìn)行探討,對(duì)創(chuàng)業(yè)教育管理具有啟示作用。
【關(guān)鍵詞】 JXL;創(chuàng)業(yè)業(yè)績考核;創(chuàng)業(yè)教育管理
一、JXL概述
在Java Web系統(tǒng)日益盛行的今天,基于Java的Excel操作需求也越發(fā)頻繁。目前操作Excel的Java工具主要有Jakarta POI和Java Excel API(簡稱JXL)兩種。Apache Jakarta POI是Apache軟件基金會(huì)的開放源碼函數(shù)庫,POI實(shí)現(xiàn)的Excel文件格式稱為HSSF,通過HSSF可以用純Java代碼來讀寫,修改Excel文件。[1] Java Excel API 是一個(gè)開放源碼項(xiàng)目,通過它可以讀取Excel文件的內(nèi)容、創(chuàng)建新的Excel文件、更新已經(jīng)存在的Excel文件。[2] 使用該API非Windows系統(tǒng)也可以通過純Java應(yīng)用來處理Excel文件。
POI與JXL的應(yīng)用都十分廣泛。POI在某些細(xì)節(jié)方面還有小Bug,并且不支持寫入圖片;而JXL提供了對(duì)圖片的支持(但僅支持png格式的圖片),只是對(duì)公式支持不是很好。而在內(nèi)存等資源的消耗方面,JXL使用資源較少,在大數(shù)據(jù)量的情況下POI使用資源明顯高于JXL。[3]
在創(chuàng)業(yè)業(yè)績考核系統(tǒng)中,需要導(dǎo)出業(yè)績?cè)聢?bào)表,并且配合使用相應(yīng)的統(tǒng)計(jì)圖表,因此我們選擇JXL工具。
二、JXL操作Excel文件的方法
1.讀取Excel文件
JXL讀取Excel文件第一步需要先建立一個(gè)Workbook工作簿用以讀取已經(jīng)存在的Excel文件,如下面代碼所示:
InputStream is = new FileInputStream(sourcefile); //sourcefile就是Excel文件的路徑
Jxl.Workbook readBook = Workbook.getWorkbook(is);
工作簿建立好后,就可以讀取其中的工作表Sheet,
得到工作表Sheet后,便可以讀取其中的單元格Cell,如下面代碼所示:
//獲取第一列第一行的值。
Cell readCell00 = readSheet.getCell(0,0);
String cellContent00 = readCell00.getContents();
從上面的代碼可以看出,可以通過getContents()方法取得單元格的內(nèi)容,而且這個(gè)方法會(huì)將單元格中的值作為一個(gè)字符串返回。如果想要獲得單元格中內(nèi)容的具體類型,可以通過Cell類的getType()方法獲得該單元格的數(shù)據(jù)類型。
操作完畢后,一定要使用close()方法來關(guān)閉前面創(chuàng)建的對(duì)象,從而釋放所占用的內(nèi)存空間。
2.JXL創(chuàng)建Excel文件
與讀取Excel文件類似,第一步需要?jiǎng)?chuàng)建一個(gè)可寫入的工作簿W(wǎng)orkbook,創(chuàng)建工作簿的時(shí)候也有兩種方式,第一種方式是直接創(chuàng)建一個(gè)本地文件,如下面代碼所示:
jxl.write.WritableWorkbook writeBook = Workbook.createWorkbook(new File(file));
第二種方式則是將Excel對(duì)象寫入到輸出流中,如下面代碼所示:
OutputStream os = new FileOutputStream(file);
jxl.write.WritableWorkbook writeBook = Workbook.createWorkbook(os);
工作簿建立好之后,接下來就可以創(chuàng)建工作表Sheet了,如下面代碼所示:
jxl.write.WritableSheet writeSheet = writeBook.createSheet(“工作表1” , 0);
creatSheet()方法中的兩個(gè)參數(shù)分別是工作表的名稱和位置,工作表建立好后,我們就可以建立單元格,代碼如下:
//添加Label類型單元格,工作表中第0列第0行位置,內(nèi)容為“標(biāo)簽”
jxl.write.Label label = new jxl.write.Label(0,0,”標(biāo)簽”);
writeSheet.addCell(label);
//添加Number類型單元格,工作表中第1列第0行位置,內(nèi)容為“123.456”
jxl.write.Number number = new jxl.write.Number(1,0,123.456);
writeSheet.addCell(number);
單元格添加完成后,要進(jìn)行寫入操作,如果不進(jìn)行這步寫入操作,那么到最后得到還是一張空表,代碼如下:
writeBook.write();
最后,使用close()方法關(guān)閉對(duì)象釋放內(nèi)存,代碼如下:
writeBook.close();
三、JXL生成業(yè)績?cè)聢?bào)表
目前,在創(chuàng)業(yè)業(yè)績考核系統(tǒng)生成的月報(bào)表中,主要涉及到的數(shù)據(jù)類型都是字符串和數(shù)字的類型,所以使用前面章節(jié)中介紹的這些操作方法基本上就能滿足要求,在具體的實(shí)現(xiàn)過程中,我們還涉及到了一些單元格格式的編輯方法,具體代碼可以查看下面的實(shí)現(xiàn)代碼片段。
第一步,創(chuàng)建工作簿和工作表:
WritableWorkbook book = Workbook.createWorkbook(new File(filename));
第二步,設(shè)置單元格格式和表頭:
sheet.mergeCells(0,0,6,0); //從第0列第0行單元格合并到第6列第0行單元格
//創(chuàng)建黑體15號(hào)字體,加粗
WritableFont wf=new WritableFont(WritableFont.createFont(\"黑體\"), 12,WritableFont.BOLD, 1);
sheet.addCell(title);
第三步,設(shè)置列名:
Label column0 = new Label(0, 1, \"序號(hào)\");
sheet.addCell(column0);
第四步,將實(shí)際數(shù)據(jù)寫入表格單元格中:
for (int i = 0; i < studentList.size(); i++) {
Student student = studentList.get(i);
if (student != 1) {
sheet.addCell(new jxl.write.Number(0, i + 2, i + 1));
最后,寫入數(shù)據(jù)并關(guān)閉文件:
book.write();
book.close()。
四、結(jié)束語
本文根據(jù)義烏工商職業(yè)技術(shù)學(xué)院創(chuàng)業(yè)學(xué)院在日常學(xué)生業(yè)績考核管理中的實(shí)際需求,詳細(xì)介紹了JXL在業(yè)績考核系統(tǒng)中的Excel月報(bào)表導(dǎo)出功能的研究和應(yīng)用。通過這項(xiàng)功能的研究實(shí)現(xiàn),可以大幅度的減少教師在學(xué)生業(yè)績考核工作中繁重的重復(fù)勞動(dòng),提高工作效率。
【參考文獻(xiàn)】
[1]李東.批量數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2005(8):12-13.
[2]劉娟,楊麗君.基于Java的Excel文件操作[J].電腦知識(shí)與技術(shù),2007,2(12).
[3]黃紀(jì)盛.POI與JXL在研究生選課系統(tǒng)的研究與應(yīng)用[J].電腦知識(shí)與技術(shù),2010,6(22).