Groovy で Excel ファイルを読み込んで .properties ファイルを作成してみる POI編

Groovy で Excel ファイルを読み込んで .properties ファイルを作成してみる - お だ のスペース の続き


Scriptom だと結構時間が掛かったので、コメントにて教えていただいた POI を試してみました。

import org.apache.poi.hssf.usermodel.HSSFWorkbook

def messages = [ ja : new Properties(), en : new Properties() ]

def fileName = /〜\Message.xls/
// ファイルを開く
HSSFWorkbook workBook = new HSSFWorkbook(new File(fileName).newInputStream())

// セルに対しての操作
def sheet = workBook.sheets[0]
def rowIndex = 1
def row = sheet.getRow(rowIndex)
def messageKey = row.getCell((short) 0).getRichStringCellValue().getString()
while (messageKey) { 
    def japanese = row.getCell((short) 1).getRichStringCellValue().getString()
    def english = row.getCell((short) 2).getRichStringCellValue().getString()
    messages.ja.setProperty(messageKey, japanese)
    messages.en.setProperty(messageKey, english)
    rowIndex++
    row = sheet.getRow(rowIndex)
    messageKey = row?.getCell((short) 0)?.getRichStringCellValue()?.getString()
} 

messages.each { entry -> 
  entry.value.store(new File(/〜\Message_${entry.key}.properties/).newOutputStream(), "$entry.key")
}

なんかめっちゃ実行速度が速い気がする、スゲ〜!


scriptom との違いで注意する箇所は、行とか列のインデックスが 0 始まりなところ。
scriptom は 1 から始まるけど、 POI は 0 からでOK。(最初気付かずズレてて変な結果になった)