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にクローズされました