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 ,