【Sikuli/Sikulix】Excelの背景色を判別して実行させる方法

Sikuliにて実行する際、Excelのセル背景色が黄色の行のみ実行したいということがあると思います。

ここではExcelのセル背景色を取得する方法と、その応用プログラムを紹介します。

ここでポイントとなるのは、セル背景色を取得できるのは、拡張子「xls」のファイルである必要がある点です。

拡張子「xlsx」の場合、この方法ではセル背景色は取得できません。

 

スポンサーリンク

 

【Excelのセル背景色を取得する】基本プログラム

 

まずは、あらかじめA1セルの背景色が任意の色に指定されたExcelファイル(xls拡張子のもの)を用意しておきます。

下記Sikuliのプログラムを実行すると、ファイルを選択するダイアログが表示されるので、上記のあらかじめ用意したxlsファイルを選択します。

すると、A1のセル背景色の情報がSikuliのメッセージ領域に表示されます。

 

あらかじめ用意するExcelファイル(xls拡張子)

 

プログラム

import xlrd#excel読み込みのためのインポート

#Excelファイル読み込みの記述---------------------------
filename = popFile()#任意のファイルパス取得のためのダイアログ表示
#上記で選択したExcelファイルをフォーマット情報付きで開く
openfile = xlrd.open_workbook(filename, formatting_info=True)
sheet_1 = openfile.sheet_by_index(0)#シート1を指定
#---------------------------------------------------

#セルを選択する
cell = sheet_1.cell(0, 0)#A1セル

#背景色情報を取得する
background_color = openfile.xf_list[cell.xf_index].background.pattern_colour_index
color_map = openfile.colour_map[background_color]

#背景色情報を表示
print(color_map)

 

実行結果

 

【Excelのセル背景色を取得する】応用プログラム

 

まずは、A列にセル背景色を、B列にA列のセル背景色に一致する果物名を記載したExcelファイル(xls拡張子のもの)を用意しておきます。

下記Sikuliのプログラムを実行すると、ファイルを選択するダイアログが表示されるので、上記のあらかじめ用意したxlsファイルを選択します。

すると、A列のセル背景色が黄色となっている行のB列に記載されている果物名をpopupで表示します。

 

あらかじめ用意するExcelファイル(xls拡張子)

 

プログラム

import xlrd#excel読み込みのためのインポート

i=1 #繰り返し処理用 1で初期化
answer = "" #黄色に一致する果物リスト作成用

#Excelファイル読み込みの記述---------------------------
filename = popFile()#任意のファイルパス取得のためのダイアログ表示
#上記で選択したExcelファイルをフォーマット情報付きで開く
openfile = xlrd.open_workbook(filename, formatting_info=True)
sheet_1 = openfile.sheet_by_index(0)#シート1を指定
#---------------------------------------------------


#行数分処理を繰り返す
while i < sheet_1.nrows:

    #セルを選択する
    cell = sheet_1.cell(i, 0)#Aのセル
    
    #背景色情報を取得する
    background_color = openfile.xf_list[cell.xf_index].background.pattern_colour_index
    color_map = openfile.colour_map[background_color]
    
    if color_map == (255,255,0):
        #以下A列のセル背景色が黄色(255,255,0)であった場合の処理
        if answer == "" :
            #Bのセルの値(まだ変数answerに何も入力されていない場合)
            answer = sheet_1.cell(i, 1).value
        else:
            #Bのセルの値(すでに変数answerに何かが入力されている場合)
            answer = answer + ", " + sheet_1.cell(i, 1).value
    else:
        #A列のセル背景色が黄色でない場合は何もしない
        pass

    i = i + 1

popup(answer)#A列のセル背景色が黄色のもののリストをポップアップ表示

 

実行結果

 

 

Sikuli関連記事はこちら

 

スポンサーリンク