- 論壇徽章:
- 0
|
最近和Excel頻繁親密接觸,主要將N個Excel表中的數(shù)據(jù)拷貝到另外的Excel表中規(guī)整為二維結(jié)構(gòu)以便入庫。但是有些表存在合并單元格的情況,甚是惱火,怎么辦哪?好在這N個Excel表結(jié)構(gòu)還比較一致,可以寫程序在指定位置讀取,然后再寫入到新的Excel表中,這樣就OK了。這里面主要用到一個組件JXL.
jxl的安裝:
主要就是將jxl的包放在WEB-INF的classes下面(如果下載到的是.jar文件,就放在lib下面).別忘了將jxl包中的common文件夾也放在WEB-INF下面.
jxl的使用:
主要的功能就是讀Excel文件和寫Excel文件
讀:
讀的時候是這樣的一個思路,先用一個輸入流(InputStream)得到Excel文件,然后用jxl中的Workbook得到工作薄,用Sheet從工作薄中得到工作表,用Cell得到工作表中得某個單元格.
InputStream->Workbook->Sheet->Cell,就得到了excel文件中的單元格
代碼:
String path="c:\\excel.xls";//Excel文件URL
InputStream is = new FileInputStream(path);//寫入到FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); //得到工作薄
jxl.Sheet st = wb.getSheet(0);//得到工作薄中的第一個工作表
Cell cell=st.getCell(0,0);//得到工作表的第一個單元格,即A1
String content=cell.getContents();//getContents()將Cell中的字符轉(zhuǎn)為字符串
wb.close();//關(guān)閉工作薄
is.close();//關(guān)閉輸入流
我們可以通過Sheet的getCell(x,y)方法得到任意一個單元格,x,y和excel中的坐標(biāo)對應(yīng).
例如A1對應(yīng)(0,0),A2對應(yīng)(0,1),D3對應(yīng)(3,2).Excel中坐標(biāo)從A,1開始,jxl中全部是從0開始.
還可以通過Sheet的getRows(),getColumns()方法得到行數(shù)列數(shù),并用于循環(huán)控制,輸出一個sheet中的所有內(nèi)容.
寫:
往Excel中寫入內(nèi)容主要是用jxl.write包中的類.
思路是這樣的:
OutputStream
OutputStream os=new FileOutputStream("c:\\test.xls");//輸出的Excel文件URL
WritableWorkbook wwb = Workbook.createWorkbook(os);//創(chuàng)建可寫工作薄
WritableSheet ws = wwb.createSheet("sheet1", 0);//創(chuàng)建可寫工作表
Label labelCF=new Label(0, 0, "hello"
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/15511/showart_102238.html |
|