利用java操作Excel文件

    技术2022-05-11  54

            很久以来都想研究一下利用java操作Excel的方法,今天没事,就稍微了解了一下,特总结一下。利用java操作Excel,有个开源的东东-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下载。

    一.读取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) {            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 代码 /**生成一个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) {                            e.printStackTrace();                        }                       }                }                   try {                    //从内存中写入文件中                    wwb.write();                    //关闭资源,释放内存                    wwb.close();                } catch (IOException e) {                    e.printStackTrace();                } catch (WriteException e) {                    e.printStackTrace();                }            }        }   

    三.在一个Excel文件中查找是否包含某一个关键字

    java 代码 /**搜索某一个文件中是否包含某个关键字        * @param file  待搜索的文件        * @param keyWord  要搜索的关键字        * @return        */       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 代码 /**往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);    }   

    以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证:

    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格式都不支持

     

    最新回复(0)