SikuliX:Apache POIでExcelシートの追加と値の設定

シナリオ

  • Java用のExcel操作ライブラリApachePOIをSikuliXで使用する
  • POIライブラリの保管場所はc:¥ApachePOI
  • サンプルプログラムではc:¥Sample.xlsxに「さんぷる」シートを追加し、セルA1に「ほげ」、セルB1に「123」をセット
POIの設定はこちらを参照

サンプルコード

# Apache POIライブラリをロード
load("C:\\ApachePOI\\commons-collections4-4.4.jar")
load("C:\\ApachePOI\\commons-compress-1.20.jar")
load("C:\\ApachePOI\\commons-math3-3.6.1.jar")
load("C:\\ApachePOI\\poi-5.0.0.jar")
load("C:\\ApachePOI\\poi-ooxml-5.0.0.jar")
load("C:\\ApachePOI\\poi-ooxml-lite-5.0.0.jar")
load("C:\\ApachePOI\\xmlbeans-4.0.0.jar")

import sys
import os
from java.io import FileOutputStream, FileInputStream
from org.apache.poi.ss.usermodel import WorkbookFactory

reload(sys)
sys.setdefaultencoding("utf-8")

# Excelファイルの保管場所
FILE_PATH = u"C:\\Sample.xlsx"

try:
    fis = FileInputStream(FILE_PATH)
    wb = WorkbookFactory.create(fis)
    # シート存在確認
    sheet = wb.getSheet(u"さんぷる")
    if sheet == None:
        # シート追加
        sheet = wb.createSheet(u"さんぷる")
    else:
        print u"シート:さんぷるは既にあります"
        wb.close()
        fis.close()
        exit()    
    # 行作成
    row = sheet.createRow(0)
    # A1セル作成&値セット
    cell = row.createCell(0)
    cell.setCellValue(u"ほげ")
    # B1セル作成&値セット
    cell = row.createCell(1)
    cell.setCellValue(123)
    # 上書き保存
    fos = FileOutputStream(FILE_PATH)
    wb.write(fos)
except Exception as e:
    print e
wb.close()
fis.close()
fos.close()

結果