Java操作Excel---读取

   java常用操作excel的方法有利用jxl类库和Apache POI接口,但是jxl目前暂停更新只支持到office2003,Apache POI还在持续更新,能够office2003以上版本,本文将介绍使用Apache POI读取excel的操作,读取内容如下:

             

   首先,新建Java项目,并导入POI的jar包,如图:

                 

 

  其次,变成读写代码,主要使用的方法有:

   1:创建工作簿对象    Workbook workbook=new HSSFWorkbook(is)(支持“.xls”);

                                             或 Workbook workbook=new XSSFWorkbook(is)(支持“.xlsx”);

          2:获取Sheet数量     workbook.getNumberOfSheets();

          3:获取Sheet对象     Sheet sheet = workbook.getSheetAt(index);

          4:获取每个sheet的迭代器,用于遍历  Iterator<Row> rowIterator = sheet.iterator(); 

          5:获取每行的内容即单元格对象  Iterator<Cell> cellIterator = row.cellIterator();

          6:获取每个单元内容   cell.getStringCellValue();

代码如下:

          

public static void main(String[] args) {
        // TODO Auto-generated method stub
        TestExcel obj=new TestExcel();
        obj.readExcelSour("D:/Temp/write.xls");

    }
    public void readExcelSour(String file) {
    
        try {
            // 创建输入流,读取Excel
            FileInputStream is = new FileInputStream(file);
            Workbook workbook = null;
            if(file.toLowerCase().endsWith("xlsx")){
                //poi-ooxml-3.11-20141221.jar
                workbook = new XSSFWorkbook(is);
            }else if(file.toLowerCase().endsWith("xls")){
                //poi-3.11-20141221.jar
                workbook = new HSSFWorkbook(is);
            }
            //获取sheet的数量
            int numberOfSheets = workbook.getNumberOfSheets();
            //遍历每个sheet
            for (int index = 0; index < numberOfSheets; index++) {
                // 每个页签创建一个Sheet对象
                Sheet sheet = workbook.getSheetAt(index);
                Iterator<Row> rowIterator = sheet.iterator(); 
                while (rowIterator.hasNext()) 
                {
                    //读取每一行
                    Row row = rowIterator.next();
                    //读取每一行的列的Interator
                    Iterator<Cell> cellIterator = row.cellIterator();
                    int count=0;
                    while (cellIterator.hasNext()) 
                    {
                        //获取每个单元格内容
                        Cell cell = cellIterator.next();
                        System.out.print(getContent(cell)+"      ");
                    } //end of rows iterator
                    System.out.println();
                }
            }
             is.close();
        } catch (IOException e) {
            
        }
    }
    //获取内容
    public String getContent(Cell cell){
        switch(cell.getCellType()){
               //String类型
        case Cell.CELL_TYPE_STRING: return cell.getStringCellValue().trim();
              //数字类型
        case Cell.CELL_TYPE_NUMERIC: return Double.toString(cell.getNumericCellValue()) ;
        }
        return null;
    }
}

   最后,查看结果:

     

 

     

posted on 2017-07-31 11:29  开发小猴子  阅读(277)  评论(0编辑  收藏  举报

导航