ワークブックからシートを読み込むのよ - groovy 2013/10/11
2013/10/11

grailsをさわりはじめて、groovyいいなーと最近ふたたび思っているところです。

POIを使って、エクセルのシートを読み込む際に、indexを指定しないととれないのが面倒です。
groovy使うならどういうふうにするかなーというわけで、こんな感じ。

// workbookからシートをある数分読み込む
wb.getNumberOfSheets().times { i ->
    def sheet = wb.getSheetAt(i)
    println "*** ${ i } ${ sheet.getSheetName() } "
}

times使ってます。
いろいろloopのやり方があってこまります。。。

プログラマメモ2: groovy 基本ループとか
each系クロージャの中断はできない - marsのメモ
が、ここまでやっていてわかったのはgroovyのloopでクロージャなのは、break,とかcontinueが使えない

なので、やはりforを使う....

def ruleSkipSheet = { name -> if(name.contains('@')) return false true } // workbookからシートをある数分読み込む for (int i in 0..wb.getNumberOfSheets() -1 ) { def sheet = wb.getSheetAt(i) def name = sheet.getSheetName() if( ruleSkipSheet( name ) ) continue println "*** ${ i } ${ sheet.getSheetName() } " }

これで読み込むシートを名前で決定できるうえのコードだと@が入っているシートのみOKというルールにしている。

: