很久以來都想研究一下利用java操作Excel的方法,今天沒事,就稍微了解了一下,特總結(jié)一下。利用java操作Excel,有個開源的東東-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下載。
一.讀取Excel文件內(nèi)容
java 代碼
- /**讀取Excel文件的內(nèi)容
- * @param file 待讀取的文件
- * @return
- */
- public static String readExcel(File file){
- StringBuffer sb = new StringBuffer();
- Workbook wb = null;
- try {
- //構(gòu)造Workbook(工作薄)對象
- wb=Workbook.getWorkbook(file);
- } catch (BiffException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- if(wb==null)
- return null;
- //獲得了Workbook對象之后,就可以通過它得到Sheet(工作表)對象了
- Sheet[] sheet = wb.getSheets();
- if(sheet!=null&&sheet.length>0){
- //對每個工作表進(jìn)行循環(huán)
- for(int i=0;i
- //得到當(dāng)前工作表的行數(shù)
- int rowNum = sheet[i].getRows();
- for(int j=0;j
- //得到當(dāng)前行的所有單元格
- Cell[] cells = sheet[i].getRow(j);
- if(cells!=null&&cells.length>0){
- //對每個單元格進(jìn)行循環(huán)
- for(int k=0;k
- //讀取當(dāng)前單元格的值
- String cellValue = cells[k].getContents();
- sb.append(cellValue+"\t");
- }
- }
- sb.append("\r\n");
- }
- sb.append("\r\n");
- }
- }
- //最后關(guān)閉資源,釋放內(nèi)存
- wb.close();
- return sb.toString();
- }
二.寫入Excel文件
這里有很多格式了,比如文本內(nèi)容加粗,加上某些顏色等,可以參考jxl的api,同時還推薦一篇不錯的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10
java 代碼
- /**生成一個Excel文件
- * @param fileName 要生成的Excel文件名
- */
- public static void writeExcel(String fileName){
- WritableWorkbook wwb = null;
- try {
- //首先要使用Workbook類的工廠方法創(chuàng)建一個可寫入的工作薄(Workbook)對象
- wwb = Workbook.createWorkbook(new File(fileName));
- } catch (IOException e) {
- e.printStackTrace();
- }
- if(wwb!=null){
- //創(chuàng)建一個可寫入的工作表
- //Workbook的createSheet方法有兩個參數(shù),第一個是工作表的名稱,第二個是工作表在工作薄中的位置
- WritableSheet ws = wwb.createSheet("sheet1", 0);
- //下面開始添加單元格
- for(int i=0;i<10;i++){
- for(int j=0;j<5;j++){
- //這里需要注意的是,在Excel中,第一個參數(shù)表示列,第二個表示行
- Label labelC = new Label(j, i, "這是第"+(i+1)+"行,第"+(j+1)+"列");
- try {
- //將生成的單元格添加到工作表中
- ws.addCell(labelC);
- } catch (RowsExceededException e) {
- e.printStackTrace();
- } catch (WriteException e) {
- e.printStackTrace();
- }
- }
- }
- try {
- //從內(nèi)存中寫入文件中
- wwb.write();
- //關(guān)閉資源,釋放內(nèi)存
- wwb.close();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (WriteException e) {
- e.printStackTrace();
- }
- }
- }
三.在一個Excel文件中查找是否包含某一個關(guān)鍵字