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