JavaプログラムからExcelシートを読み取るプログラムがあります。
以下のようにセルを反復処理しています。
Iterator cells = row.cellIterator();
String temp;
StringBuilder sb;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
while (cells.hasNext()) {
Cell cell = (Cell) cells.next();
temp = null;
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
temp = cell.getRichStringCellValue().getString();
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
temp = sdf.format(cell.getDateCellValue());
} else {
temp = df.format(new BigDecimal(cell.getNumericCellValue()));
}
break;
default:
}
if (temp == null || temp.equalsIgnoreCase("null")) {
sb.append("").append(";");
} else {
sb.append(temp).append(";");
}
}
ご覧のとおり、エクセル行の値をセミコロンで区切って含む文字列ビルダーを作成しようとしています。
問題は、列の値が空の場合、2 つの連続したセミコロンを持つ文字列ビルダーで空の値として使用することです。
ただし、呼び出し
セル cell = (セル) cells.next();
空のセルを単に無視し、次の空でないセルにジャンプします。
だからライン
if (temp == null || temp.equalsIgnoreCase("null"))
満たされることはありません。
iterator で空の列の値のハンドルを取得する方法は?