osa2's memo

自分の記憶のために・・・。

Kotlin + POI で Excelシート読み込み

のんきにお昼間にやってみましたが、、これは素敵ですね。

package com.example.demo

import java.io.File
import org.apache.poi.ss.usermodel.WorkbookFactory

fun main(args : Array<String>) {
     val inputFile = File("C:\\Users\\user\\Desktop\\sample.xlsx")
     val inputStream = inputFile.inputStream()
     val workbook = WorkbookFactory.create(inputStream);
     val firstSheet = workbook.getSheetAt(0)

     firstSheet.forEach {
         it.forEach {
             if (it.columnIndex > 0) print(",")
             print(it)
         }
         println()
     }

明示的に記述していないクラスは import なくてもエラーにならないという・・。まぁコンフリクトするなら書かなきゃでしょうけど。

ちゃんと型推論してくれるので、2段目の it では Cell を前提にメソッドの候補も挙げてくれる。ビルド前のことなので多少時間がかかってもありがたい。勝手な推測ですが、コンパイル時に型を暗黙にであれ決めているので、実行時に型推論し(て実行速度が落ち)たり、型違いで落ちることが少ないと思われる。

POIもそのまま使えてこんなにシンプルなコード。これはいいなぁ。