Closed2
【Apache POI】JavaのPOIで空白セルがうまく処理できない
nullでないこと、空でないこと、空白でないことを保証する必要があるため、
以下の条件を全て満たすかどうかで判定する。
- cell != null
- cell.getCellType() != CellType.BLANK
- StringUtils.isNotBlank(cell.toString())
また、formatter.formatCellValue()を使うと、
桁数の多い数値でE+11などがついてしまう場合に正しい数値を読み取れる。
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadExcelFile {
public static void main(String[] args) {
try (FileInputStream fileInputStream = new FileInputStream("path_to_your_excel_file.xlsx");
Workbook workbook = new XSSFWorkbook(fileInputStream)) {
Sheet sheet = workbook.getSheetAt(0); // 最初のシートを取得
DataFormatter formatter = new DataFormatter();
for (Row row : sheet) {
for (Cell cell : row) {
String cellString = "";
if (cell != null && cell.getCellType() != CellType.BLANK && StringUtils.isNotBlank(cell.toString())) {
cellString = formatter.formatCellValue(cell);
}
System.out.print(cellString + "\t");
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
StringUtils.isNotBlank()が期待する結果
import org.apache.commons.lang3.StringUtils;
StringUtils.isNotBlank("a"); // true
StringUtils.isNotBlank(" a "); // true
StringUtils.isNotBlank(null); // false
StringUtils.isNotBlank(""); // false
StringUtils.isNotBlank(" "); // false
StringUtils.isNotBlank(" "); // false
このスクラップは2023/09/27にクローズされました