Tech_sharma:
私は徹底的にExcelファイルを読んでいるとあれば私のような条件を持っているcolumnType
「日付」がセットされgetCellDateValue
使用してそれ以外formatter
とformatCellValue
:
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
}