天天看点

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