Excel VBAのRangeオブジェクトは、同じセルを参照していてもIs演算子で比較できないという特徴があり、OpenPyXLでセルを表すCellオブジェクトの場合、どうなっているのか、私は気になりました。
既存のxlsxファイルでCellオブジェクトをis演算子で比較する
で、以下のようスクリプトを実行してみました。
wb = openpyxl.load_workbook('C:\\temp\\foo.xlsx')
ws = wb.worksheets[0] cell_1 = ws['A1']
cell_2 = ws.cell(1, 1)
print(cell_1 is cell_2)
結果はTrueです。
id()関数で識別値を確認すれば、もちろん同じです。
新規xlsxファイルでCellオブジェクトをis演算子で比較する
念のため、新規ブックでも確認しました。
wb = openpyxl.Workbook()
ws_1 = wb.worksheets[0]
cell_1 = ws_1['A1']
ws_2 = wb.active
cell_2 = ws_2.cell(1, 1)
openpyxl.Workbook()で新規にブックを作成して、
wb = openpyxl.Workbook()
先頭シートのA1セルから取得したcell_1と、
ws_1 = wb.worksheets[0]
cell_1 = ws_1['A1']
結局はwb.worksheets[0]と同じシートですが、workbook.activeで取得したアクティブシートの、worksheet.cell()で取得したcell_2を、
ws_2 = wb.active
cell_2 = ws_2.cell(1, 1)
比較しています。
print(cell_1 is cell_2)
結果は、やっぱりTrueです。
ws_1・ws_2の識別値を確認すれば、もちろん同じ値で、
cell_1・cell_2の識別値も当然、同じ値です。
最終更新日時:2019-07-03 10:59
Home » Python » OpenPyXLの使い方 » OpenPyXLのCellはis演算子で比較できる