Java 为什么我们可以';t使用cell.toString()直接将excel单元格值转换为字符串,而不是创建新的cellToString(cell)方法
我已经使用ApachePOI创建了一个Excel阅读器。我能够获得单元格值:Java 为什么我们可以';t使用cell.toString()直接将excel单元格值转换为字符串,而不是创建新的cellToString(cell)方法,java,excel,apache-poi,Java,Excel,Apache Poi,我已经使用ApachePOI创建了一个Excel阅读器。我能够获得单元格值: cell=sh.getRow(row).getCell(col); 在此之后,我想将单元格对象转换为字符串,因为我的Excel工作表单元格可以是任何类型,所以我将其转换为通用字符串值。 因此,我只需写下: data[row][col]=cell.toString(); 但是,我看到了通常遵循的做法,即创建一个新的cellToString方法,如下所示: public String cellToString(HSS
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);
有人能告诉我为什么我们不直接遵循第一种方法,因为它同样有效。我敢打赌,在大多数情况下,你最好使用包装纸,例如:
- 您希望确保只处理某些类型的单元格,并将所有其他类型的单元格都放在上面的
的实现者显然希望这样做cellToString()
- 您不想区分丢失的单元格和空单元格,也不想让代码中充斥着检查
forgetCell()
null
- 您对单元格的默认格式不满意
。。或者其他任何情况下,当你不高兴有任何字符串咀嚼。您的里程数肯定会有所不同。在我看来,如果要求获取出现在
Excel
单元格中的文本,那么最佳做法是使用DataFormatter
。看见