《Java Web應(yīng)用程序開發(fā)》10 Java實(shí)用技術(shù)_第1頁
《Java Web應(yīng)用程序開發(fā)》10 Java實(shí)用技術(shù)_第2頁
《Java Web應(yīng)用程序開發(fā)》10 Java實(shí)用技術(shù)_第3頁
《Java Web應(yīng)用程序開發(fā)》10 Java實(shí)用技術(shù)_第4頁
《Java Web應(yīng)用程序開發(fā)》10 Java實(shí)用技術(shù)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java實(shí)用技術(shù)第九章掌握文件上傳掌握使用Java操作Excel目標(biāo)在客戶的應(yīng)用中,常常有這樣的需求:你要把我的文件、圖片上傳到網(wǎng)絡(luò)上、你要把我們的報(bào)表直接用Excel打開等。概述使用ApacheCommonsFileUpload文件上傳組件需要兩個(gè)類庫文件:commons-fileupload.jarcommons-io.jarCommonsFileUpload簡介要想得到這兩個(gè)類庫文件,可以進(jìn)入Apache官方網(wǎng)站的commons-fileupload網(wǎng)頁下載:/fileupload/

CommonsFileUpload簡介CommonsFileUpload簡介commons-fileupload目錄結(jié)構(gòu)如下:CommonsFileUpload簡介commons-fileupload-1.2.2:根目錄lib:類庫目錄site:包括CommonsFileupload組件站點(diǎn)所有頁面文件apidocs:API文檔目錄,API文檔鏈接可以在下面的首頁中找到,也可以直接打開此目錄,點(diǎn)擊index.html打開API文檔CommonsFileUpload簡介FileUpload是基于CommonsIO的,所以在項(xiàng)目開發(fā)前先確定CommonsIO的jar包在瀏覽器中輸入/io/download_io.cgi,仿照下載FileUpload的方式將IO的組件也下載下來。CommonsFileUpload簡介ServletFileUpload類publicvoidsetSizeMax(long

sizeMax)publicList

parseRequest(HttpServletRequest

req)throwsFileUploadExceptionpublicstaticbooleanisMultipartContent(HttpServletRequest

req)主要對(duì)象方法DiskFileItemFactorypublicDiskFileItemFactory()publicvoidsetSizeThreshold(int

sizeThreshold)publicvoidsetRepository(File

repository)主要對(duì)象方法FileItem接口publicboolean

isFormField()publicStringgetName()publicStringgetFieldName()publicvoidwrite(File

file)publicjava.lang.StringgetString()publicStringgetContentType()publicvoiddelete()主要對(duì)象方法FileUploadException類

在文件上傳過程中,可能發(fā)生各種各樣的異常,例如網(wǎng)絡(luò)中斷、數(shù)據(jù)丟失等等。FileUp

loadException是其他異常類的父類,其他幾個(gè)類只是被間接調(diào)用的底層類,對(duì)于Apache組件調(diào)用人員來說,只需對(duì)FileUploadException異常類進(jìn)行捕獲和處理即可。

主要對(duì)象方法CommonsFileUpload上傳文件創(chuàng)建表單頁面submit.jsp,提交上傳請(qǐng)求創(chuàng)建上傳文件頁面fileUpload.jsp,上傳文件到指定的目錄,并限定大小CommonsFileUpload使用創(chuàng)建表單頁面submit.jsp,將form表單的enctype屬性設(shè)置為"multipart/form-data",method屬性設(shè)置為"post"。CommonsFileUpload使用<%@pagelanguage="java"import="java.util.*

pageEncoding="gb2312"%><html> <head> <title>表單頁面</title> </head> <body> <formname="myform"action="fileUpload.jsp"method="post" enctype="multipart/form-data">

名稱:<inputtype="text"name="name"><br>文件:<inputtype="file"name="myfile"><br> <inputtype="submit"name="submit"value="提交">

</form> </body></html>CommonsFileUpload使用CommonsFileUpload使用fileUpload.jsp中使用ServletFileUpload靜態(tài)類來解析request,工廠類DiskFileItemFactory會(huì)對(duì)mulipart類的表單中的所有字段進(jìn)行處理,不只是file字段//創(chuàng)建文件工廠DiskFileItemFactoryfactory=newDiskFileItemFactory();factory.setSizeThreshold(4096);//設(shè)置緩沖區(qū)大小,這里是4KBfactory.setRepository(tempFilePath);//設(shè)置緩沖區(qū)目錄CommonsFileUpload使用//創(chuàng)建上傳文件操作對(duì)象ServletFileUploadupload=newServletFileUpload(factory);//限定上傳文件大小upload.setSizeMax(4194304);//設(shè)置最大文件尺寸,這里是4MB//得到所有的請(qǐng)求上傳文件List<FileItem>items=upload.parseRequest(request);CommonsFileUpload使用在企業(yè)辦公系統(tǒng)中,常常有客戶要求這樣:你要把我們的報(bào)表直接用Excel打開(電信系統(tǒng)、銀行系統(tǒng)等),那么Java里面有沒有操作Excel的組件呢?POI與Excel交互答案是肯定的,下面我來就來介紹一下POI。Apache的Jakata項(xiàng)目的POI子項(xiàng)目,目前比較成熟的是HSSF接口,處理MSExcel對(duì)象。它可以生成真正的Excel對(duì)象,你可以控制一些屬性如sheet,cell等等。POI與Excel交互POI項(xiàng)目實(shí)現(xiàn)的Excel97文件格式稱為HSSF、HSSF為讀取操作提供了兩類API:

usermodel:“用戶模型”

eventusermodel:“事件-用戶模型”主要對(duì)象介紹對(duì)象作用HSSFWorkbookexcel的文檔對(duì)象HSSFSheetexcel的表單HSSFRowexcel的行HSSFCellexcel的單元格HSSFFontexcel字體HSSFDataFormat日期格式HSSFCellStylecell樣式主要對(duì)象介紹創(chuàng)建一個(gè)HSSFWorkbook實(shí)例,然后創(chuàng)建一個(gè)把文件寫入磁盤的OutputStream,延遲到處理結(jié)束時(shí)創(chuàng)建OutputStream也可以:HSSFWorkbook

wb=newHSSFWorkbook();

FileOutputStream

fileOut=newFileOutputStream(StringfileName);

wb.write(fileOut);

fileOut.close();創(chuàng)建Excel文件

有了HSSFWorkbook對(duì)象后,我們就可以在工作簿上創(chuàng)建工作表,行列及單元格了:創(chuàng)建Excel文件HSSFSheetsheet=wb.createSheet();//在工作簿上創(chuàng)建工作表

HSSFRowrow

=sheet.createRow(0);

//在索引0的位置創(chuàng)建行(最頂端的行)

HSSFCellcell=row.createCell(0);

//在索引0的位置創(chuàng)建單元格

cell.setCellValue(1);

//設(shè)置單元格的值

row.createCell(1).setCellValue(1.2);

row.createCell(2).setCellValue("一個(gè)字符串");

row.createCell(3).setCellValue(true);創(chuàng)建Excel文件

如果要設(shè)置單元格的樣式,首先要?jiǎng)?chuàng)建一個(gè)樣式對(duì)象,然后讓單元格引用這個(gè)樣式對(duì)象://創(chuàng)建字體,紅色、粗體HSSFFontfont=workbook.createFont();font.setColor(HSSFFont.COLOR_RED);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//創(chuàng)建單元格的格式,如居中、左對(duì)齊等HSSFCellStyle

cellStyle=workbook.createCellStyle();//水平方向上居中對(duì)齊cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//垂直方向上居中對(duì)齊cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//設(shè)置字體cellStyle.setFont(font);//為單元格設(shè)置格式cell.setCellStyle(cellStyle);創(chuàng)建Excel文件實(shí)例:創(chuàng)建出一個(gè)存儲(chǔ)學(xué)生成績的Excel表格。創(chuàng)建Excel文件用HSSF的usermodel讀取文件很簡單。首先創(chuàng)建一個(gè)InputStream,然后創(chuàng)建一個(gè)HSSFWorkbook實(shí)例:

InputStream

myxls=newFileInputStream(StringfileName);

HSSFWorkbook

wb

=newHSSFWorkbook(myxls);讀取Excel文件有了HSSFWorkbook實(shí)例,接下來就可以提取工作表、工作表的行和列,例如:

HSSFSheetsheet=wb.getSheetAt(0);

//

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論