亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種讀取、生成Excel文檔的方法及裝置與流程

文檔序號(hào):12119578閱讀:228來源:國(guó)知局
本發(fā)明涉及數(shù)據(jù)處理
技術(shù)領(lǐng)域
:,特別涉及一種讀取、生成Excel文檔的方法及裝置。
背景技術(shù)
::一提到Excel文檔,大家腦海中就會(huì)浮現(xiàn)出很多表格。作為office系列產(chǎn)品之一,無論是財(cái)務(wù)人員操作的批量轉(zhuǎn)賬交易文件,還是網(wǎng)上銀行系統(tǒng)提供給客戶下載的財(cái)務(wù)報(bào)表,或者軟件中心開發(fā)人員使用的代碼復(fù)查記錄單、內(nèi)部測(cè)試案例、功能點(diǎn)估算書,都是Excel文檔格式的。由于jxl.jar包不提供讀取Excel文件和生成Excel文件的代碼實(shí)現(xiàn)。這就給廣大的JAVA開發(fā)人員造成了困難,開發(fā)人員都是根據(jù)理解來讀取Excel文件和生成Excel文件,這樣就涉及的代碼量很大,開發(fā)效率很低,錯(cuò)誤率也很高。對(duì)于使用JAVA的開發(fā)人員而言,如何有效地利用jxl.jar包來讀取和生成Excel數(shù)據(jù)文件是目前急需解決的問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例的主要目的在于一種讀取、生成Excel文檔的方法及裝置,有效地利用jxl.jar包來讀取和生成Excel數(shù)據(jù)文件,實(shí)現(xiàn)讀取、生成Excel規(guī)范化,降低錯(cuò)誤率。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種讀取Excel文檔的方法,包括:獲得工作??;從所述工作薄中獲得工作表;從所述工作表中獲得單元格;從所述單元格中獲得單元格的值和類型;釋放資源,完成Excel文檔的讀取。可選的,在本發(fā)明一實(shí)施例中,所述獲得工作表的方法為通過工作薄的getSheet方法或者工作名稱讀取??蛇x的,在本發(fā)明一實(shí)施例中,所述獲得單元格的方法為通過工作表的getCell方法選擇單元格??蛇x的,在本發(fā)明一實(shí)施例中,所述獲得單元格的值的方法為通過單元格的getContents方法把單元格中的信息以字符的形式讀取;獲得單元格的類型的方法為通過單元格的getType方法返回單元格的類型信息,同時(shí),通過CellType類預(yù)設(shè)Excel中的類型信息。為實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種生成Excel文檔的方法,包括:創(chuàng)建工作?。辉谒龉ぷ鞅≈袆?chuàng)建工作表;在所述工作表中創(chuàng)建單元格,并設(shè)置合并單元格的功能;設(shè)置所述單元格的樣式、字體;寫入文件信息至Excel中??蛇x的,在本發(fā)明一實(shí)施例中,所述單元格的樣式包括:?jiǎn)卧癖尘?、顏色??蛇x的,在本發(fā)明一實(shí)施例中,所述設(shè)置合并單元格的功能是通過writablesheet.mergeCells(intx,inty,intm,intn)來實(shí)現(xiàn)??蛇x的,在本發(fā)明一實(shí)施例中,所述創(chuàng)建工作薄的方法包括:直接生成本地文件;或?qū)xcel對(duì)象直接寫入到輸出流中。對(duì)應(yīng)地,為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種讀取Excel文檔的裝置,包括:工作薄讀取單元,用于獲得工作??;工作表讀取單元,用于從所述工作薄中獲得工作表;單元格讀取單元,用于從所述工作表中獲得單元格;單元格的內(nèi)容讀取單元,用于從所述單元格中獲得單元格的值和類型;讀取結(jié)束單元,用于釋放資源,完成Excel文檔的讀取。對(duì)應(yīng)地,為實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種生成Excel文檔的裝置,包括:工作薄生成單元,用于創(chuàng)建工作?。还ぷ鞅砩蓡卧?,用于在所述工作薄中創(chuàng)建工作表;單元格生成單元,用于在所述工作表中創(chuàng)建單元格,并設(shè)置合并單元格的功能;單元格內(nèi)容設(shè)置單元,用于設(shè)置所述單元格的樣式、字體;寫入內(nèi)容單元,用于寫入文件信息至Excel中。上述技術(shù)方案具有如下有益效果:本技術(shù)方案利用jxl.jar包提供的API接口,實(shí)現(xiàn)了標(biāo)準(zhǔn)化的讀取Excel文件和生成Excel文件的方法,普遍適用于軟件工程中的各種Excel文件應(yīng)用,比如:批量轉(zhuǎn)賬交易文件、客戶財(cái)務(wù)報(bào)表、代碼復(fù)查記錄單、內(nèi)部測(cè)試案例、功能點(diǎn)估算書。對(duì)于JAVA開發(fā)人員而言,流程簡(jiǎn)化,代碼量大大減少,代替人工方式,工作量大大減少,同時(shí)代碼的規(guī)范化,也使錯(cuò)誤率大大降低。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明提出的一種讀取Excel文檔的方法流程圖;圖2為本發(fā)明提出的一種生成Excel文檔的方法流程圖;圖3為本發(fā)明提出的一種讀取Excel文檔的裝置框圖;圖4為本發(fā)明提出的一種生成Excel文檔的裝置框圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。jxl操作excel包括對(duì)象Workbook、Sheet、Cell。一個(gè)excel就對(duì)應(yīng)一個(gè)Workbook對(duì)象,一個(gè)Workbook可以有多個(gè)Sheet對(duì)象,一個(gè)Sheet對(duì)象可以有多個(gè)Cell對(duì)象。通過Workbook、Sheet、Cell這三個(gè)對(duì)象我們就可以實(shí)現(xiàn)Excel文件的讀取工作。我們先想想一下讀取步驟,不管是什么樣的Excel操作框架必定都要經(jīng)歷。如圖1所示,為本發(fā)明提出的一種讀取Excel文檔的方法流程圖。包括:步驟101):獲得工作??;在步驟101中,選取Excel文件得到工作薄Workbook。Workbookworkbook=Workbook.getWorkbook(newFile("myfile.xls"))步驟102):從所述工作薄中獲得工作表;在步驟102中,通過Workbook的getSheet方法選擇第一個(gè)工作表(從0開始)。Sheetsheet=workbook.getSheet(0)另外,也可以通過工作的名稱來得到Sheet。步驟103):從所述工作表中獲得單元格;在步驟103中,通過Sheet的getCell方法選擇位置為C2的單元格(兩個(gè)參數(shù)都從0開始)。Cellc2=sheet.getCell(2,1)步驟104):從所述單元格中獲得單元格的值和類型;讀取單元格的值,通過Cell的getContents方法,把單元格中的信息以字符的形式讀取出來。Stringstringc2=c2.getContents()Cell提供了一個(gè)getType方法,能夠返回單元格的類型信息,同時(shí)JXL提供了一個(gè)cellType類用來預(yù)設(shè)Excel中的類型信息,而且JXL提供了一些Cell類的子類用來分別表示各種類型的單元格,如:LabelCell,NumberCell,DateCell分別表示字符、數(shù)值、日期類型的單元格。if(c2.getType()==CellType.LABEL){LabelCellnc=(LabelCell)c2;Stringnumberb2=nc.getString();}if(c2.getType()==CellType.DATE){DateCellnc=(DateCell)c2;Datenumberb2=nc.getDate();}if(c2.getType()==CellType.NUMBER){NumberCellnc=(NumberCell)c2;doublenumberb2=nc.getValue();}步驟105):釋放資源,完成Excel文檔的讀取。當(dāng)你完成對(duì)Excel電子表格數(shù)據(jù)的處理后,一定要使用close()方法來關(guān)閉先前創(chuàng)建的對(duì)象,以釋放讀取數(shù)據(jù)表的過程中所占用的內(nèi)存空間,在讀取大量數(shù)據(jù)時(shí)尤為重要,最后不要忘記關(guān)閉workbook以釋放資源:workbook.close()。通過WritableWorkbook,WritableSheet,Label這三個(gè)對(duì)象我們就可以實(shí)現(xiàn)Excel文件的寫入工作。我們先想想一下寫入,不管是什么樣的Excel操作框架必定都要經(jīng)歷。如圖2所示,為本發(fā)明提出的一種生成Excel文檔的方法流程圖。包括:步驟201):創(chuàng)建工作?。籄PI提供了兩種方式來處理可寫入的輸出流,一種是直接生成本地文件,如果文件名不帶全路徑的話,缺省的文件會(huì)定位在當(dāng)前目錄,如果文件名帶有全路徑的話,則生成的Excel文件則會(huì)定位在相應(yīng)的目錄;另外一種是將Excel對(duì)象直接寫入到輸出流,例如:用戶通過瀏覽器來訪問Web服務(wù)器,如果HTTP頭設(shè)置正確的話,瀏覽器自動(dòng)調(diào)用客戶端的Excel應(yīng)用程序,來顯示動(dòng)態(tài)生成的Excel電子表格。創(chuàng)建可寫入的Excel工作?。篧ritableWorkbookwwb=Workbook.createWorkbook(newFile(targetfile));將WritableWorkbook直接寫入到輸出流:OutputStreamos=newFileOutputStream(targetfile);WritableWorkbookwwb=Workbook.createWorkbook(os)。步驟202):在所述工作薄中創(chuàng)建工作表;WritableSheetws=wwb.createSheet("通訊錄",0);//創(chuàng)建sheet步驟203):在所述工作表中創(chuàng)建單元格,并設(shè)置合并單元格的功能;添加文本類單元格:LabellabelC=newLabel(0,0,"ThisisaLabelcell");添加帶有字型Formatting的對(duì)象:WritableFontwf=newWritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);WritableCellFormatwcfF=newWritableCellFormat(wf);labelCF=newLabel(1,0,"ThisisaLabelCell",wcfF);ws.addCell(labelCF);添加帶有字體顏色Formatting的對(duì)象:WritableFontwfc=newWritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);WritableCellFormatwcfFC=newWritableCellFormat(wfc);LabellabelCFC=newLabel(1,0,"ThisisaLabelCell",wcfFC);ws.addCell(labelCF);添加Number對(duì)象:NumberlabelN=newjxl.write.Number(0,1,3.1415926);ws.addCell(labelN);添加帶有formatting的Number對(duì)象:NumberFormatnf=newNumberFormat("#.##");WritableCellFormatwcfN=newWritableCellFormat(nf);NumberlabelNF=newNumber(1,1,3.1415926,wcfN);ws.addCell(labelNF);添加Boolean對(duì)象:BooleanlabelB=newjxl.write.Boolean(0,2,false);ws.addCell(labelB);添加DateTime對(duì)象:DateTimelabelDT=newDateTime(0,3,newjava.util.Date());ws.addCell(labelDT);添加帶有formatting的DateFormat對(duì)象:DateFormatdf=newDateFormat("ddMMyyyyhh:mm:ss");WritableCellFormatwcfDF=newWritableCellFormat(df);DateTimelabelDTF=newDateTime(1,3,newDate(),wcfDF);ws.addCell(labelDTF);添加公式單元格:Fornualformual=newFormual(0,11,”Sum(A1:A9)”);wrb.addCell(formual);添加圖像:WritableImagewrimage=newWritableImage(1,5,10,10,newFile(imageFilepath));wrb.addImage(wrimage);注意,API中注明只支持png文件。在步驟203中,還需要設(shè)置合并單元格。通過writablesheet.mergeCells(intx,inty,intm,intn);來實(shí)現(xiàn)的。表示將從第x+1列,y+1行到m+1列,n+1行合并(四個(gè)點(diǎn)定義了兩個(gè)坐標(biāo),左上角和右下角)結(jié)果是合并了m-x+1行,n-y+1列,兩者乘積就是合并的單元格數(shù)量。sheet.mergeCells(0,6,3,8);label=newLabel(0,6,"合并了12個(gè)單元格");sheet.addCell(label)。步驟204):設(shè)置所述單元格的樣式、字體;對(duì)于添加單元格樣式,主要是改變單元格背景、字體、顏色等。WritableCellFormatwc=newWritableCellFormat();wc.setAlignment(Alignment.CENTRE);//設(shè)置居中wc.setBorder(Border.ALL,BorderLineStyle.THIN);//設(shè)置邊框線wc.setBackground(jxl.format.Colour.RED);//設(shè)置單元格的背景顏色label=newLabel(1,5,"字體",wc);sheet.addCell(label);設(shè)置單元格的字體WritableFontwf=newWritableFont(WritableFont.createFont("楷書"),20);WritableCellFormatfont=newWritableCellFormat(wf);label=newLabel(2,6,"楷書",font);sheet.addCell(label);步驟205):寫入文件信息至Excel中。wwb.write();//寫入數(shù)據(jù)wwb.close();//關(guān)閉文件下面介紹如何使用jxl.jar完成兩個(gè)日常工作的示例。第一個(gè)示例是讀取Excel接口文檔生成XML格式的接口定義文件。第二個(gè)示例示生成Excel格式功能點(diǎn)估算書。一、讀取Excel接口文檔生成XML文件Excel接口文檔定義如下表1:表1使用jxl.jar包讀取Excel接口文檔生成XML格式的接口定義文件:二、生成Excel格式功能點(diǎn)估算書使用jxl.jar生成Excel格式功能點(diǎn)估算書,Excel接口文檔定義如下表2。表2參考代碼:由上述實(shí)施例可知,本技術(shù)方案利用jxl.jar包提供的API接口,實(shí)現(xiàn)了標(biāo)準(zhǔn)化的讀取Excel文件和生成Excel文件的方法,普遍適用于軟件工程中的各種Excel文件應(yīng)用,對(duì)于JAVA開發(fā)人員而言,流程簡(jiǎn)化,代碼量大大減少,代替人工方式,工作量大大減少,同時(shí)代碼的規(guī)范化,也使錯(cuò)誤率大大降低。如圖3所示,為本發(fā)明提出的一種讀取Excel文檔的裝置框圖。包括:工作薄讀取單元301,用于獲得工作?。还ぷ鞅碜x取單元302,用于從所述工作薄中獲得工作表;單元格讀取單元303,用于從所述工作表中獲得單元格;單元格的內(nèi)容讀取單元304,用于從所述單元格中獲得單元格的值和類型;讀取結(jié)束單元305,用于釋放資源,完成Excel文檔的讀取。如圖4所示,為本發(fā)明提出的一種生成Excel文檔的裝置框圖。包括:工作薄生成單元401,用于創(chuàng)建工作?。还ぷ鞅砩蓡卧?02,用于在所述工作薄中創(chuàng)建工作表;單元格生成單元403,用于在所述工作表中創(chuàng)建單元格,并設(shè)置合并單元格的功能;單元格內(nèi)容設(shè)置單元404,用于設(shè)置所述單元格的樣式、字體;寫入內(nèi)容單元405,用于寫入文件信息至Excel中。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一般計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-OnlyMemory,ROM)或隨機(jī)存儲(chǔ)記憶體(RandomAccessMemory,RAM)等。本領(lǐng)域技術(shù)人員還可以了解到本發(fā)明實(shí)施例列出的各種功能是通過硬件還是軟件來實(shí)現(xiàn)取決于特定的應(yīng)用和整個(gè)系統(tǒng)的設(shè)計(jì)要求。本領(lǐng)域技術(shù)人員可以對(duì)于每種特定的應(yīng)用,可以使用各種方法實(shí)現(xiàn)所述的功能,但這種實(shí)現(xiàn)不應(yīng)被理解為超出本發(fā)明實(shí)施例保護(hù)的范圍。以上具體實(shí)施方式,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1