Java 为什么我们可以';t使用cell.toString()直接将excel单元格值转换为字符串,而不是创建新的cellToString(cell)方法

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

我已经使用ApachePOI创建了一个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);

有人能告诉我为什么我们不直接遵循第一种方法,因为它同样有效。

我敢打赌,在大多数情况下,你最好使用包装纸,例如:

  • 您希望确保只处理某些类型的单元格,并将所有其他类型的单元格都放在上面的
    cellToString()
    的实现者显然希望这样做

  • 您不想区分丢失的单元格和空单元格,也不想让代码中充斥着检查
    getCell()
    for
    null

  • 您对单元格的默认格式不满意


。。或者其他任何情况下,当你不高兴有任何字符串咀嚼。您的里程数肯定会有所不同。

在我看来,如果要求获取出现在
Excel
单元格中的文本,那么最佳做法是使用
DataFormatter
。看见