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

时间:2017-06-11 08:30:04

标签: java excel apache-poi

我使用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);

有人可以告诉我为什么我们不直接遵循第一种方法,因为它也适用。

1 个答案:

答案 0 :(得分:0)

我敢打赌,大部分时间你使用包装器会更好,例如:

  • 你想确保只处理某些类型的单元格,抛弃所有其他类型,正如上面cellToString()的实现者显然想做的那样

  • 您不在乎区分丢失和空单元格,也不希望您的代码在查看getCell() null的返回值

  • 您对单元格的默认格式

  • 不满意

..或任何其他情况,当你不喜欢任何字符串咀嚼时。你的里程肯定会有所不同。