ワークブックからシートを読み込むのよ その2 - groovy
2013/10/12
groovy
poi
groovyです。
前回からのつづき。
プログラマメモ2: ワークブックからシートを読み込むのよ - groovy
forを使わずやってみた。工夫したつもりだけど。
あとはlogicの中身を実装する感じ。
今回やってて学習したこと、メソッドをクロージャに変換できること。このやり方使えばxxx.yyyが減るから、すっきりするかな。
しかし、はまったのは、比較時に()をつけないと、クロージャーそのままとして比較してしまい、エラーになった。
いろいろためしたけど、この案はぼつにしてforまわし使うんだろうな。
// wbはpoiのワークブックのインスタンス
// ワークブックのメソッドをクロージャにする
def numberOfSheets = wb.&getNumberOfSheets
def getSheetAt = wb.&getSheetAt
// ルール定義シート読み飛ばし
// @含んでいるシート名のみ対象とする
def ruleSkipSheet = { name ->
if( name.contains('@') ) return false
true
}
// ルール定義シート読み込み終了
def ruleStop = { pos ->
if( numberOfSheets() <= pos ) return false
true
}
// main loop処理
def loop = { pos, logic ->
if ( ruleStop(pos) ){
def sheet = getSheetAt(pos)
// シート処理
logic(sheet)
// 次のシートへ
pos += 1
// 再帰呼び出し
call(pos, logic)
}
return
}
// sheetごとの処理を行う
def logic = { sheet ->
if( ruleSkipSheet( sheet.getSheetName() ) ) return
println " *****OK logic ${ sheet }"
}
// 処理実行
loop(0, logic)
: