SikuliX:Apache POIでセルの参照

シナリオ

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


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

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

# cell_value
# 戻り値: セルの値 値がない場合は None
# 引数 : 
#  s: シート名
#  r: 行位置 1行目はゼロ
#  c: 列位置 A列はゼロ
def cell_value(s, r, c):
    sheet = wb.getSheet(s)
    row = sheet.getRow(r)
    if row != None:
        cell = row.getCell(c)
    else:
        cell = None
    return cell

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

try:
    fis = FileInputStream(FILE_PATH)
    wb = WorkbookFactory.create(fis)
    # セル:A1
    print u"セル:A1=", cell_value(u"シート", 0, 0)
    # セル:B2
    print u"セル:B2=", cell_value(u"シート", 1, 1)
    # セル:A5
    print u"セル:A5=", cell_value(u"シート", 4, 0)
except Exception as e:
    print e
finally:
    wb.close()
    fis.close()

結果

セル:A1= 国名
セル:B2= JPY
セル:A5= None