ApcheポイのgetDateCellValue()メソッドを使用してExcelの日付列の値を読みながら、nullポインタ例外を処理する方法

Tech_sharma:

私は徹底的にExcelファイルを読んでいるとあれば私のような条件を持っているcolumnType「日付」がセットされgetCellDateValue使用してそれ以外formatterformatCellValue

String valueOfColumn = StringUtils.equalsIgnoreCase(excelData.getColumnType(), "date")
                            ? format(cell.getDateCellValue(), "dd/MM/yyyy")
                            : formatter.formatCellValue(cell);
excelData.setColumnValue(valueOfColumn );

それが値を持つかどうかが、日付列がnullの場合、それは投げていますかどうか、すべての列に対して正常に動作していますNullPointerException

なぜそれがこの例外をスローして、どのように私はそれを取り除くのですか?

Ananthapadmanabhan:

それはであり、ApacheのPOIのドキュメント方法があること自体getDateCellValue()、あなたがリターンを呼び出しているnullおそらく、空白cells.Soためformat()の方法は、このためにNULLポインタの例外をスローする必要があります。列の型が「日付」の場合、あなたのコードは、空のセル値に遭遇するたびに、それはnullを返しますformat()メソッドは、フォーマットしようとすると例外をスローします。

java.util.Date getDateCellValue()

日付としてセルの値を取得します。

文字列のために我々は例外をスローします。空白のセルのために我々はNULLを返します。

戻り値:日付としてセルの値

だから、要するに、あなたはこのケースを処理するために、あなたのコード内でヌルチェックを追加する必要があります。

    String valueOfColumn;
   if(cell != null ) {
    if(StringUtils.equalsIgnoreCase(excelData.getColumnType(), "date") && cell.getDateCellValue() != null) {
      valueOfColumn = format(cell.getDateCellValue(), "dd/MM/yyyy");
    } else {
      valueOfColumn = formatter.formatCellValue(cell)
    }
     excelData.setColumnValue(valueOfColumn );
   }
   else {
   // handle else case for cell being null
   }

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=389919&siteId=1