概要
kimukouさんに教えて頂いた、nobeansさんが開発されたGExcelAPIを使用してExcelのデータを取得してみました。内容
nobeansさんが作成したサンプルほぼそのままですが、以下コード例です。import org.jggug.kobo.gexcelapi.GExcel
@GrabResolver(name="kobo-maven-repo", root="https://github.com/kobo/maven-repo/raw/master/release")
@Grab("org.jggug.kobo:gexcelapi:0.2")
class GExcelApiTest {
void load(String fileName) {
// Excelファイルを読込む
def book = GExcel.open(fileName)
// シートを取得する
def sheet = book[0]
// def sheet = book["Sheet1"] // シート名でも取得可能
// セルの値を取得する
println sheet.A1.value
println sheet.A2.value
println "-"*20
def dump = { cell -> println "${cell.label}: ${cell.value} - ${cell.cellType}" }
sheet.A_.each{ cell -> dump cell }
println "-"*20
sheet.B_.each{ cell -> dump cell }
println "-"*20
sheet._1.each{ cell -> dump cell }
println "-"*20
sheet._2.each{ cell -> dump cell }
println "-"*20
sheet.A1_B6.each{ row -> row.each { cell -> dump cell } }
}
}
実行結果123.0 水曜日 -------------------- A1: 123.0 - 0 A2: 水曜日 - 1 A3: true - 4 A4: 40808.0 - 0 A5: - 1 A6: 1+1 - 2 -------------------- B1: null - 3 B2: null - 3 B3: null - 3 B4: null - 3 B5: null - 3 B6: null - 3 -------------------- A1: 123.0 - 0 B1: null - 3 C1: null - 3 D1: null - 3 -------------------- A2: 水曜日 - 1 B2: null - 3 -------------------- A1: 123.0 - 0 B1: null - 3 A2: 水曜日 - 1 B2: null - 3 A3: true - 4 B3: null - 3 A4: 40808.0 - 0 B4: null - 3 A5: - 1 B5: null - 3 A6: 1+1 - 2 B6: null - 3様々なイテレーターが用意されており、簡単にセルの値を取得することができました。
cell.valueで簡単にセルの値を取れます。
POIでやると、セルタイプに沿ったメソッドを実行して値を取らなきゃいけなかったり、
煩雑な部分が多かったですが、こちらは非常にシンプルで使いやすいです。
Excelデータの中身をさらしてはいませんが、実行結果のA4セルには日付を設定しています。
日付を出力して欲しかったのですが、数値が表示されました。
日付が取得できなかったのは少し残念ですが、非常に強力かつ便利なAPIなので今後も使っていきたいです。
これを使って、Excelから情報をDTOに格納し、テンプレートエンジンを使ってソースコードを自動生成するようなスクリプトでも書いてみようと思います。
DTOを使うというアプローチの場合は
返信削除Groovy + XLSBeans でエクセルから HTML に流し込み
http://another.maple4ever.net/archives/1515/
という別のアプローチもあるみたいですね。
一応参考まで
>kimukouさん
返信削除>Groovy + XLSBeans でエクセルから HTML に流し込み
こんなやり方もあるんですね。
色々やり方があって、実に奥が深いですね。
勉強になります。