文件處理枫攀,讀寫(xiě)Excel

來(lái)源于:https://www.iteye.com/blog/271788203-491052

首先需要一個(gè)JXL包掰茶,下載地址:http://download.csdn.net/source/292830?

1顷链、生成EXCEL需要手動(dòng)寫(xiě)查詢(xún)語(yǔ)句把ORACLE數(shù)據(jù)庫(kù)中的數(shù)據(jù)查詢(xún)出來(lái),再通過(guò)操作寫(xiě)到EXCEL文件里面焚刚。?

2点弯、通過(guò)EXCEL把數(shù)據(jù)讀取到ORACLE,同樣需要去讀取EXCEL工作薄里面的內(nèi)容矿咕,再通過(guò)INSERT語(yǔ)句去插入數(shù)據(jù)庫(kù)操作抢肛。

示例:?

包括從Excel讀取數(shù)據(jù),生成新的Excel狼钮,以及修改Excel

Java代碼?

package?common.util;???


import?jxl.*;???

import?jxl.format.UnderlineStyle;???

import?jxl.write.*;???

import?jxl.write.Number;???

import?jxl.write.Boolean;???


import?java.io.*;???


/**?

*?Created?by?IntelliJ?IDEA.?

*?User:?xl?

*?Date:?2005-7-17?

*?Time:?9:33:22?

*?To?change?this?template?use?File?|?Settings?|?File?Templates.?

*/???

public?class?ExcelHandle???

{???

public?ExcelHandle()???

{???

}???


/**?

*?讀取Excel?

*?

*?@param?filePath?

*/???

public?static?void?readExcel(String?filePath)???

{???

try???

{???

InputStream?is?=new?FileInputStream(filePath);???

Workbook?rwb?=?Workbook.getWorkbook(is);???

//Sheet?st?=?rwb.getSheet("0")這里有兩種方法獲取sheet表,1為名字,而為下標(biāo)捡絮,從0開(kāi)始???

Sheet?st?=?rwb.getSheet("original");???

Cell?c00?=?st.getCell(0,0);???

//通用的獲取cell值的方式,返回字符串???

String?strc00?=?c00.getContents();???

//獲得cell具體類(lèi)型值的方式???

if(c00.getType()?==?CellType.LABEL)???

{???

LabelCell?labelc00?=?(LabelCell)c00;???

strc00?=?labelc00.getString();???

}???

//輸出???

System.out.println(strc00);???

//關(guān)閉???

rwb.close();???

}???

catch(Exception?e)???

{???

e.printStackTrace();???

}???

}???


/**?

*?輸出Excel?

*?

*?@param?os?

*/???

public?static?void?writeExcel(OutputStream?os)???

{???

try???

{???

/**?

*?只能通過(guò)API提供的工廠(chǎng)方法來(lái)創(chuàng)建Workbook燃领,而不能使用WritableWorkbook的構(gòu)造函數(shù),?

*?因?yàn)轭?lèi)WritableWorkbook的構(gòu)造函數(shù)為protected類(lèi)型?

*?method(1)直接從目標(biāo)文件中讀取WritableWorkbook?wwb?=?Workbook.createWorkbook(new?File(targetfile));?

*?method(2)如下實(shí)例所示?將WritableWorkbook直接寫(xiě)入到輸出流?

*/???

WritableWorkbook?wwb?=?Workbook.createWorkbook(os);???

//創(chuàng)建Excel工作表?指定名稱(chēng)和位置???

WritableSheet?ws?=?wwb.createSheet("Test?Sheet?1",0);???


//**************往工作表中添加數(shù)據(jù)*****************???


//1.添加Label對(duì)象???

Label?label?=new?Label(0,0,"this?is?a?label?test");???

ws.addCell(label);???


//添加帶有字型Formatting對(duì)象???

WritableFont?wf?=new?WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);???

WritableCellFormat?wcf?=new?WritableCellFormat(wf);???

Label?labelcf?=new?Label(1,0,"this?is?a?label?test",wcf);???

ws.addCell(labelcf);???


//添加帶有字體顏色的Formatting對(duì)象???

WritableFont?wfc?=new?WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,???

UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);???

WritableCellFormat?wcfFC?=new?WritableCellFormat(wfc);???

Label?labelCF?=new?Label(1,0,"This?is?a?Label?Cell",wcfFC);???

ws.addCell(labelCF);???


//2.添加Number對(duì)象???

Number?labelN?=new?Number(0,1,3.1415926);???

ws.addCell(labelN);???


//添加帶有formatting的Number對(duì)象???

NumberFormat?nf?=new?NumberFormat("#.##");???

WritableCellFormat?wcfN?=new?WritableCellFormat(nf);???

Number?labelNF?=new?jxl.write.Number(1,1,3.1415926,wcfN);???

ws.addCell(labelNF);???


//3.添加Boolean對(duì)象???

Boolean?labelB?=new?jxl.write.Boolean(0,2,false);???

ws.addCell(labelB);???


//4.添加DateTime對(duì)象???

jxl.write.DateTime?labelDT?=new?jxl.write.DateTime(0,3,new?java.util.Date());???

ws.addCell(labelDT);???


//添加帶有formatting的DateFormat對(duì)象???

DateFormat?df?=new?DateFormat("dd?MM?yyyy?hh:mm:ss");???

WritableCellFormat?wcfDF?=new?WritableCellFormat(df);???

DateTime?labelDTF?=new?DateTime(1,3,new?java.util.Date(),wcfDF);???

ws.addCell(labelDTF);???



//添加圖片對(duì)象,jxl只支持png格式圖片???

File?image?=new?File("f:\\2.png");???

WritableImage?wimage?=new?WritableImage(0,1,2,2,image);???

ws.addImage(wimage);???

//寫(xiě)入工作表???

wwb.write();???

wwb.close();???

}???

catch(Exception?e)???

{???

e.printStackTrace();???

}???

}???


/**???

*?拷貝后,進(jìn)行修改,其中file1為被copy對(duì)象锦援,file2為修改后創(chuàng)建的對(duì)象???

*?盡單元格原有的格式化修飾是不能去掉的,我們還是可以將新的單元格修飾加上去剥悟,???

*?以使單元格的內(nèi)容以不同的形式表現(xiàn)???

*@param?file1???

*@param?file2???

*/???

public?static?void?modifyExcel(File?file1,File?file2)???

{???

try???

{???

Workbook?rwb?=?Workbook.getWorkbook(file1);???

WritableWorkbook?wwb?=?Workbook.createWorkbook(file2,rwb);//copy???

WritableSheet?ws?=?wwb.getSheet(0);???

WritableCell?wc?=?ws.getWritableCell(0,0);???

//判斷單元格的類(lèi)型,做出相應(yīng)的轉(zhuǎn)換???

if(wc.getType?==?CellType.LABEL)???

{???

Label?label?=?(Label)wc;???

label.setString("The?value?has?been?modified");???

}???

wwb.write();???

wwb.close();???

rwb.close();???

}???

catch(Exception?e)???

{???

e.printStackTrace();???

}???

}???



//測(cè)試???

public?static?void?main(String[]?args)???

{???

try???

{???

//讀Excel???

ExcelHandle.readExcel("f:/testRead.xls");???

//輸出Excel???

File?fileWrite?=new?File("f:/testWrite.xls");???

fileWrite.createNewFile();???

OutputStream?os?=new?FileOutputStream(fileWrite);???

ExcelHandle.writeExcel(os);???

//修改Excel???

ExcelHandle.modifyExcel(new?file(""),new?File(""));???

}???

catch(Exception?e)???

{???

e.printStackTrace();???

}???

}???

}???

?2.在jsp中做相關(guān)測(cè)試灵寺,創(chuàng)建一個(gè)writeExcel.jsp

Java代碼?

<%???

response.reset();//清除Buffer???

response.setContentType("application/vnd.ms-excel");???

File?fileWrite?=new?File("f:/testWrite.xls");???

fileWrite.createNewFile();???

new?FileOutputStream(fileWrite);???

ExcelHandle.writeExcel(new?FileOutputStream(fileWrite));???

%>???

在IE中瀏覽writeExcel.jsp就可以動(dòng)態(tài)生成Excel文檔了,其中response.setContentType("application/vnd.ms-excel");語(yǔ)句必須要区岗,才能確保不亂碼略板,在jsp中輸入<%@page?contentType="application/vnd.ms-excel;charset=GBK"%>不行。???

在IE中瀏覽writeExcel.jsp就可以動(dòng)態(tài)生成Excel文檔了慈缔,其中response.setContentType("application/vnd.ms-excel");語(yǔ)句必須要叮称,才能確保不亂碼,在jsp中輸入<%@page contentType="application/vnd.ms-excel;charset=GBK"%>不行藐鹤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓤檐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子娱节,更是在濱河造成了極大的恐慌挠蛉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肄满,死亡現(xiàn)場(chǎng)離奇詭異谴古,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)稠歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)掰担,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人怒炸,你說(shuō)我怎么就攤上這事带饱。” “怎么了横媚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵纠炮,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我灯蝴,道長(zhǎng)恢口,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任穷躁,我火速辦了婚禮耕肩,結(jié)果婚禮上因妇,老公的妹妹穿的比我還像新娘。我一直安慰自己猿诸,他們只是感情好婚被,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著梳虽,像睡著了一般址芯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窜觉,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天谷炸,我揣著相機(jī)與錄音,去河邊找鬼禀挫。 笑死旬陡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的语婴。 我是一名探鬼主播描孟,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼砰左!你這毒婦竟也來(lái)了匿醒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤菜职,失蹤者是張志新(化名)和其女友劉穎青抛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體酬核,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜜另,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嫡意。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片举瑰。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蔬螟,靈堂內(nèi)的尸體忽然破棺而出此迅,到底是詐尸還是另有隱情,我是刑警寧澤旧巾,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布耸序,位于F島的核電站,受9級(jí)特大地震影響鲁猩,放射性物質(zhì)發(fā)生泄漏坎怪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一廓握、第九天 我趴在偏房一處隱蔽的房頂上張望搅窿。 院中可真熱鬧嘁酿,春花似錦、人聲如沸男应。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沐飘。三九已至游桩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耐朴,已是汗流浹背众弓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隔箍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓脚乡,卻偏偏與公主長(zhǎng)得像蜒滩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奶稠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容