ScalaでExcelファイルを操作する機会があったので、メモを残しておきます。今回はApache POIを使いました。
POIの導入
build.sbt
libraryDependencies += "org.apache.poi" % "poi" % "3.13"
Excelを読む
ワークブックの取得
import org.apache.poi.ss.usermodel._
val workbook = WorkbookFactory.create(new File("/path/to/excel/file"))
シートの取得
インデックスで取得
val sheet = workbook.getSheetAt(0)
名前で取得
val sheet = workbook.getSheet("新しいシート")
行の取得
val row = sheet.getRow(0)
セルの取得
val cell = row.getCell(0)
セルの値の取得
セルのタイプ毎にgetCellXXXValue
が違う点だけ注意です。
val value = cell.getCellType match {
case Cell.CELL_TYPE_BLANK => cell.getStringCellValue
case Cell.CELL_TYPE_BOOLEAN => cell.getBooleanCellValue
case Cell.CELL_TYPE_ERROR => cell.getErrorCellValue
case Cell.CELL_TYPE_FORMULA => cell.getCellFormula
case Cell.CELL_TYPE_NUMERIC => cell.getNumericCellValue
case Cell.CELL_TYPE_STRING => cell.getStringCellValue
}
Excelに書く
セルの取得
セルの取得までは読む場合と同じ。
セルに値をセットする
cell.setCellValue("hoge")
ファイルに出力する
val out = java.io.FileOutputStream("/path/to/output")
workbook.write(out)
out.close
当たり前ですが、cell.setCellValue
しただけだど、Excelファイルにはなんら反映されないので注意してください。
以上、基本的なExcelの読み書きでした。