posts - 0, comments - 77, trackbacks - 0, articles - 356
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Java操作EXCEL文件

Posted on 2007-09-07 16:11 semovy 阅读(334) 评论(0)  编辑  收藏 所属分类: JAVA应用
很久以来都想研究一下利用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;    
    }

只有注册用户登录后才能发表评论。


网站导航: