SikuliX:Apache POIを使用する

シナリオ

  • Java用のExcel操作ライブラリApachePOIをSikuliXで使用する
  • POIライブラリの保管場所はc:¥ApachePOI
  • サンプルプログラムではc:¥Sample.xlsxの内容を表示する
 Excelファイルの内容
  

インストール

1.Apache POIをダウンロード この例では5.0.0をダウンロード
 poi ダウンロード
  URLは複数あるがすべて同じものなのでどれでも良い
 poi ダウンロード
2.ダウンロードファイルを解凍し下記のjarファイル7個をc:¥ApachePOIに保管する
  commons-collections4-4.4.jar
  commons-compress-1.20.jar
  commons-math3-3.6.1.jar
  poi-5.0.0.jar
  poi-ooxml-5.0.0.jar
  poi-ooxml-lite-5.0.0.jar
  xmlbeans-4.0.0.jar

  解凍後のjarファイルの場所
 
※SikuliXバグ情報
 sikulix1.1.4以降のloadコマンドにバグがある模様。
 https://bugs.launchpad.net/sikuli/+bug/1789569 
 2.1でFix予定らしい。2.0.4、2.0.5では問題ない
 回避策:下記フォルダに各種ライブラリをコピー後IDEを起動し直すと自動でロードする
 ※AppDataは隠しファイルなので表示できるように設定する(エクスプローラ>表示タブ>隠しファイル)
 C:¥Users¥<ユーザー名>¥AppData¥Roaming¥Sikulix¥Extensions

サンプルコード

# 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
from java.io import File, FileOutputStream ,FileInputStream
from org.apache.poi.ss.usermodel import WorkbookFactory

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

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

file = FileInputStream(FILE_PATH)
wb = WorkbookFactory.create(file)

# シートの選択
sheet = wb.getSheet(u"シート")
# シートの内容を表示
for row in sheet:
    print row.getCell(0), row.getCell(1)
wb.close()
file.close()

結果

国名 通貨
日本 JPY
米国 USD
英国 GBP