ワークブックからシートを読み込むのよ - groovy
2013/10/11
2013/10/11
groovy
poi
grailsをさわりはじめて、groovyいいなーと最近ふたたび思っているところです。
POIを使って、エクセルのシートを読み込む際に、indexを指定しないととれないのが面倒です。
groovy使うならどういうふうにするかなーというわけで、こんな感じ。
// workbookからシートをある数分読み込む
wb.getNumberOfSheets().times { i ->
def sheet = wb.getSheetAt(i)
println "*** ${ i } ${ sheet.getSheetName() } "
}
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というルールにしている。
: