動作検証:Windows 10 + Python 3.7.3 + xlrd 1.2.0
OpenPyXLのCellは同じセルを参照していれば同じ識別値で、xlwingsのRangeは取得するたびに違うことに気付きました。
こうなると、Excelを操作する他のライブラリの場合どうなのかが気になります。
[スポンサードリンク]
で、xlrdのCellオブジェクトについて確認しました。
xlrdのCellをis演算子で比較する
xlrdのCellオブジェクトの場合も、同じセルを参照していてもis演算子で比較した結果はFalseだろうと思いつつ、以下のようなスクリプトを実行しました。
import xlrd
wb = xlrd.open_workbook('C:\\temp\\foo.xlsx')
ws = wb.sheet_by_index(0) cell_1 = ws.cell(1, 1)
cell_2 = ws.cell(1, 1)
print(cell_1 is cell_2)
wb = xlrd.open_workbook('C:\\temp\\foo.xlsx')
ws = wb.sheet_by_index(0) cell_1 = ws.cell(1, 1)
cell_2 = ws.cell(1, 1)
print(cell_1 is cell_2)
予想どおりFalseです。
xlrdのCellの識別値
Pythonのid()関数で識別値を確認すれば、
上図のとおり、もちろん別の値です。
私が気になったのは、xlwingsのように取得するたびに別なのかどうかです。
結果xlrdの場合は、xlwingsとは異なり、同じ値が返されます。
最終更新日時:2019-07-15 17:02
[スポンサードリンク]