1

xls または xlsx シートを読み取る必要があります。正常にシートを読みましたが、文字列ではなく 10 進数値を返します (例: 3 の場合 - 3.0 を返します)。セルの値をそのまま読み取る必要があります。だから私は文字列として返す必要があります

4

3 に答える 3

2

POI は、Excel がファイルに保存した正確な値を示しています。一般に、Excel セルに数値を書き込むと、Excel はそれをフォーマット付きの数値として保存します。POI は、必要に応じてその書式設定を行うためのサポートを提供します (ほとんどの人はそうではありません - 数値を数値として使用できるようにしたいのです)。

探しているクラスはDataFormatterです。あなたのコードは次のようになります

 DataFormatter fmt = new DataFormatter();
 for (Row r : sheet) {
    for (Cell c : r) {
       CellReference cr = new CellRefence(c);
       System.out.println("Cell " + cr.formatAsString() + " is " + 
                          fmt.formatCellValue(c) );
    }
 }
于 2012-09-21T09:09:49.143 に答える
0
//use this method for getting values from excel.It might help u.
private String getCellValue(Cell cell) {
    if (cell == null) {
        return null;
    }
    if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
        return cell.getStringCellValue();
    } else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
        return cell.getNumericCellValue() + "";
    } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
        return cell.getBooleanCellValue() + "";
    }else if(cell.getCellType() == Cell.CELL_TYPE_BLANK){
        return cell.getStringCellValue();
    }else if(cell.getCellType() == Cell.CELL_TYPE_ERROR){
        return cell.getErrorCellValue() + "";
    } 
    else {
        return null;
    }
}
于 2012-09-21T11:42:25.563 に答える
0

次のコードのようなスイッチとケースを使用します。

switch (cell.getCellType()) { 
                    case STRING: 
                        String c = cell.getStringCellValue();

                        break; 
                    case NUMERIC: 
                        int n = (int) cell.getNumericCellValue();

                        break; 
                    case BOOLEAN:
                        boolean b = cell.getBooleanCellValue();

                    break; 
                    default : 
                        } 
于 2019-03-30T14:57:16.483 に答える