Home » Python » OpenPyXLの使い方 » OpenPyXLのCellはis演算子で比較できる

OpenPyXLのCellはis演算子で比較できる

動作検証バージョン:Windows 10 + Python 3.7.3 + OpenPyXL 2.6.2
OpenPyXLのオブジェクトモデルを、とても面白く感じています。

Excel VBAのRangeオブジェクトは、同じセルを参照していてもIs演算子で比較できないという特徴があり、OpenPyXLでセルを表すCellオブジェクトの場合、どうなっているのか、私は気になりました。

[スポンサードリンク]

既存のxlsxファイルでCellオブジェクトをis演算子で比較する

で、以下のようスクリプトを実行してみました。

import openpyxl
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演算子で比較する

念のため、新規ブックでも確認しました。

import openpyxl
wb = openpyxl.Workbook()

ws_1 = wb.worksheets[0]
cell_1 = ws_1['A1']

ws_2 = wb.active
cell_2 = ws_2.cell(1, 1)

print(cell_1 is cell_2)

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演算子で比較できる

「OpenPyXLの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.