`
fulerbakesi
  • 浏览: 561919 次
文章分类
社区版块
存档分类
最新评论

POI Excel 04

 
阅读更多

@author YHC

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

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

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

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

           //根据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.* //记得导入这个包

               //创建文件
		 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();
	            }
	        }
	    }

Excel内容如下图:创建该文件是用的POI Excel 02 中的click me!!!,想看创建点该超链接!

读取该文件以及与运行该代码结果对比:


如有写错误的地方,请大家指出,thanks!


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics