利用java操作Excel文件

wojingwu 13年前發布 | 1K 次閱讀
利用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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!