利用java操作Excel文件
利用java操作Excel文件 利用java操作Excel,有個開源的東東-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下載。 一.讀取Excel文件內容 java 代碼 public static String readExcel(File file){ StringBuffer sb = new StringBuffer(); Workbook wb = null; try { //構造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){ //對每個工作表進行循環 for(int i=0;i //得到當前工作表的行數 int rowNum = sheet[i].getRows(); for(int j=0;j //得到當前行的所有單元格 Cell[] cells = sheet[i].getRow(j); if(cells!=null&&cells.length>0){ //對每個單元格進行循環 for(int k=0;k //讀取當前單元格的值 String cellValue = cells[k].getContents(); sb.append(cellValue+"\t"); } } sb.append("\r\n"); } sb.append("\r\n"); } } //最后關閉資源,釋放內存 wb.close(); return sb.toString(); } 二.寫入Excel文件 這里有很多格式了,比如文本內容加粗,加上某些顏色等,可以參考jxl的api,同時還推薦一篇不錯的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10 java 代碼 public static void writeExcel(String fileName){ WritableWorkbook wwb = null; try { //首先要使用Workbook類的工廠方法創建一個可寫入的工作薄(Workbook)對象 wwb = Workbook.createWorkbook(new File(fileName)); } catch (IOException e) { e.printStackTrace(); } if(wwb!=null){ //創建一個可寫入的工作表 //Workbook的createSheet方法有兩個參數,第一個是工作表的名稱,第二個是工作表在工作薄中的位置 WritableSheet ws = wwb.createSheet("sheet1", 0); //下面開始添加單元格 for(int i=0;i<10;i++){ for(int j=0;j<5;j++){ //這里需要注意的是,在Excel中,第一個參數表示列,第二個表示行 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 { //從內存中寫入文件中 wwb.write(); //關閉資源,釋放內存 wwb.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } 三.在一個Excel文件中查找是否包含某一個關鍵字 java 代碼 public static boolean searchKeyWord(File file,String keyWord){ boolean res = false; Workbook wb = null; try { //構造Workbook(工作薄)對象 wb=Workbook.getWorkbook(file); } catch (BiffException e) { return res; } catch (IOException e) { return res; } if(wb==null) return res; //獲得了Workbook對象之后,就可以通過它得到Sheet(工作表)對象了 Sheet[] sheet = wb.getSheets(); boolean breakSheet = false; if(sheet!=null&&sheet.length>0){ //對每個工作表進行循環 for(int i=0;i if(breakSheet) break; //得到當前工作表的行數 int rowNum = sheet[i].getRows(); boolean breakRow = false; for(int j=0;j if(breakRow) break; //得到當前行的所有單元格 Cell[] cells = sheet[i].getRow(j); if(cells!=null&&cells.length>0){ boolean breakCell = false; //對每個單元格進行循環 for(int k=0;k if(breakCell) break; //讀取當前單元格的值 String cellValue = cells[k].getContents(); if(cellValue==null) continue; if(cellValue.contains(keyWord)){ res = true; breakCell = true; breakRow = true; breakSheet = true; } } } } } } //最后關閉資源,釋放內存 wb.close(); return res; } 四.往Excel中插入圖片圖標 插入圖片的實現很容易,參看以下代碼: java 代碼 public static void insertImg(WritableSheet dataSheet, int col, int row, int width, int height, File imgFile){ WritableImage img = new WritableImage(col, row, width, height, imgFile); dataSheet.addImage(img); } 以上代碼的注釋已經很清楚了,大概也就不用再解釋了,我們可以用如下程序驗證: java 代碼 try { //創建一個工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入的工作表 WritableSheet imgSheet = workbook.createSheet("Images",0); //要插入的圖片文件 File imgFile = new File("D:/1.png"); //圖片插入到第二行第一個單元格,長寬各占六個單元格 insertImg(imgSheet,0,1,6,6,imgFile); workbook.write(); workbook.close(); catch (IOException e) { e.printStackTrace(); catch (WriteException e) { e.printStackTrace(); 但是jxl只支持png格式的圖片,jpg格式和gif格式都不支持 五.插入頁眉頁腳 一般的頁眉頁腳都分為三個部分,左,中,右三部分,利用如下代碼可實現插入頁眉頁腳 java 代碼 public static void setHeader(WritableSheet dataSheet,String left,String center,String right){ HeaderFooter hf = new HeaderFooter(); hf.getLeft().append(left); hf.getCentre().append(center); hf.getRight().append(right); //加入頁眉 dataSheet.getSettings().setHeader(hf); //加入頁腳 //dataSheet.getSettings().setFooter(hf); } 我們可以用如下代碼測試該方法: java 代碼 try { //創建一個工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入的工作表 WritableSheet dataSheet = workbook.createSheet("加入頁眉",0); ExcelUtils.setHeader(dataSheet, "chb", " 2007-03-06", "第1頁,共3頁"); workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } }
本文由用戶 wojingwu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!