我使用Apache POI创建了一个Excel阅读器。我能够获得单元格值:
cell=sh.getRow(row).getCell(col);
在此之后,我想将单元格对象转换为字符串,因为我的Excel工作表单元格可以是任何类型,因此我将其转换为通用字符串值。 所以,我能做到的只是写作:
data[row][col]=cell.toString();
但是,我看到了通常遵循的做法,即创建一个新的cellToString
方法,如下所示:
public String cellToString(HSSFCell cell){
int type;
Object result;
type=cell.getCellType();
switch(type){
case 0:
result=cell.getNumericCellValue();
break;
case 1:
result=cell.getStringCellValue();
break;
default:
throw new RuntimeException("There is no support of this type of cell");
}
return result.toString();
}
然后调用上面的函数:
data[row][col]=cellToString(cell);
有人可以告诉我为什么我们不直接遵循第一种方法,因为它也适用。
答案 0 :(得分:0)
我敢打赌,大部分时间你使用包装器会更好,例如:
你想确保只处理某些类型的单元格,抛弃所有其他类型,正如上面cellToString()
的实现者显然想做的那样
您不在乎区分丢失和空单元格,也不希望您的代码在查看getCell()
null
的返回值{ p>
您对单元格的默认格式
..或任何其他情况,当你不喜欢任何字符串咀嚼时。你的里程肯定会有所不同。