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。(最初気付かずズレてて変な結果になった)