当前位置:软件学习 > Excel >>

POI Excel 04

@author YHC

使用Java1.5 foreach 循环迭代遍历所有行和单元格

     有时候你仅仅只想迭代遍历工作薄中的所有行(Row),或者行中所有的单元格,如果你使用的是Java5或者是更高版本,这个非常容易取得进行遍历

 因为它将允许一种新的foreach循环支持工作.非常幸运,它很简单,Sheet和Row都实现了 java.lang.Iterable接口支持foreach,对于行(Row)

而言,允许访问CellIterator内部类来支持迭代所有单元格,对于工作薄(Sheet)提供了 rowIterator()进行迭代所有的行


[java]
    //根据Workbook得到第个0下标的工作薄对象  
  Sheet sheet = wb.getSheetAt(0); 
//遍历该工作薄中所有的行  
   for (Row row : sheet) { 
     //遍历一行中的所有的单元格  
     for (Cell cell : row) { 
       // 你需要实现功能的代码  
     } 
   } 

           //根据Workbook得到第个0下标的工作薄对象
    Sheet sheet = wb.getSheetAt(0);
  //遍历该工作薄中所有的行
     for (Row row : sheet) {
       //遍历一行中的所有的单元格
       for (Cell cell : row) {
         // 你需要实现功能的代码
       }
     }
获得单元格内容

     得到一个单元格中的内容,你首先需要知道单元格是什么类型,(请求一个string类型的单元格,如果他的内容是数字类型,那么将抛出此异常NumberFormatException 例如),你会想去转换单元格的类型,然后调用适当的getter方法得到单元格.

    在以下代码,,我们将遍历一个工作薄中的所有的单元格,通过CellReference转换输出,然后输出Cell的内容;

  //   import org.apache.poi.ss.usermodel.* //记得导入这个包

 

[java]           
  //创建文件  
 File file=new File("D:/workbook.xls"); 
//初始化输入流   
FileInputStream is = new FileInputStream(file);   
//创建Excel,并指定Excel读取位置  
Workbook wb=new  HSSFWorkbook(is); 
//根据Workbook得到第0个下标的工作薄  
Sheet sheet1 = wb.getSheetAt(0); 
//遍历工作薄中的所有行,注意该foreach只有Java5或者以上才支持  
   for (Row row : sheet1) { 
    //遍历行中的所有单元格 Java5+ 才能使用  
       for (Cell cell : row) { 
        //单元格的参照 ,根据行和列确定某一个单元格的位置  
           CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex()); 
           //打印单元格的位置  
           System.out.print(cellRef.formatAsString()); 
           //输出分隔符  
           System.out.print(" - "); 
               //得到单元格类型  
           switch (cell.getCellType()) { 
               case Cell.CELL_TYPE_STRING://String类型单元格  
                //输出文本  
                   System.out.println(cell.getRichStringCellValue().getString()); 
                   break; 
               case Cell.CELL_TYPE_NUMERIC://数字类型  
                //检查单元格是否包含一个Date类型  
                //仅仅只检查Excel内部的日期格式,  
                   if (DateUtil.isCellDateFormatted(cell)) { 
                    //输出日期  
                       System.out.println(cell.getDateCellValue()); 
                   } else { 
                    //输出数字  
                       System.out.println(cell.getNumericCellValue()); 
                   } 
                   break; 
               case Cell.CELL_TYPE_BOOLEAN://Boolean类型  
                   System.out.println(cell.getBooleanCellValue()); 
                   break; 
               case Cell.CELL_TYPE_FORMULA://公式  
                //输出公式  
                   System.out.println(cell.getCellFormula()); 
                   break; 
               default: 
                   System.out.println(); 
           } 
       } 
   } 

               //创建文件    www.zzzyk.com
   File file=new File("D:/workbook.xls");
  //初始化输入流
  FileInputStream is = new FileInputStream(file); 
  //创建Excel,并指定Excel读取位置
  Workbook wb=new  HSSFWorkbook(is);
  //根据Workbook得到第0个下标的工作薄
  Sheet sheet1 = wb.getSheetAt(0);
  //遍历工作薄中的所有行,注意该foreach只有Java5或者以上才支持
     for (Row row : sheet1) {
  &

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,