天天看點

java 讀excel

一.讀取Excel檔案内容

java 代碼 /**讀取Excel檔案的内容    * @param file  待讀取的檔案    * @return    */   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) {        }        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檔案

/**生成一個Excel檔案        * @param fileName  要生成的Excel檔案名        */       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) {                try {                    //從記憶體中寫入檔案中                    wwb.write();                    //關閉資源,釋放記憶體                    wwb.close();                } catch (IOException e) {                    e.printStackTrace();                } catch (WriteException e) {        }   

三.在一個Excel檔案中查找是否包含某一個關鍵字

/**搜尋某一個檔案中是否包含某個關鍵字        * @param file  待搜尋的檔案        * @param keyWord  要搜尋的關鍵字        * @return       public static boolean searchKeyWord(File file,String keyWord){            boolean res = false;            Workbook wb = null;                //構造Workbook(工作薄)對象                wb=Workbook.getWorkbook(file);            } catch (BiffException e) {                return res;            if(wb==null)            //獲得了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中插入圖檔圖示

插入圖檔的實作很容易,參看以下代碼: /**往Excel中插入圖檔    * @param dataSheet  待插入的工作表    * @param col 圖檔從該列開始    * @param row 圖檔從該行開始    * @param width 圖檔所占的列數    * @param height 圖檔所占的行數    * @param imgFile 要插入的圖檔檔案   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);    }    以上代碼的注釋已經很清楚了,大概也就不用再解釋了,我們可以用如下程式驗證:         //建立一個工作薄    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) {     但是jxl隻支援png格式的圖檔,jpg格式和gif格式都不支援

五.插入頁眉頁腳

一般的頁眉頁腳都分為三個部分,左,中,右三部分,利用如下代碼可實作插入頁眉頁腳 /**向Excel中加入頁眉頁腳    * @param dataSheet 待加入頁眉的工作表    * @param left    * @param center    * @param right   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);    我們可以用如下代碼測試該方法:     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) {    }      }   

描述: 源代碼

下載下傳次數: 4414