Excelを扱うことができるPythonライブラリであるopenpyxlでExcelファイルの座標/インデックスからセルを取得する方法を備忘録として残しておきます。
目次
サンプルのExcelファイル
使い方をまとめる上で、以下の「sample.xlsx」という名称のExcelファイルをCドライブ直下に格納したことを想定します。
また、「sample.xlsx」には「購入リスト」と「お店一覧」という名称のシートが2つあることを想定します。
座標/インデックスからセルを取得する
【サンプルコード】
##### 【座標からセルを取得する】 #####
import openpyxl
# Excelファイルのロード
excel_path='C:/sample.xlsm'
workbook = openpyxl.load_workbook(filename=excel_path)
# '購入リスト'という名称のシートを指定
worksheet = workbook['購入リスト']
# 座標からセルを単一取得
cell_B2 = worksheet['B2']
print(f'cell(座標から単一取得)のデータ型: {type(cell_B2)}')
print(f'cell_B2: {cell_B2}')
print('------------------------------------------')
# 座標からセルを範囲取得
cell_B2C3 = worksheet['B2:C3']
print(f'cell(座標から範囲取得)のデータ型: {type(cell_B2C3)}')
print(f'cell_B2C3: {cell_B2C3}')
print('------------------------------------------')
# インデックス(2行目、2列目)からセルを取得
cell_22 = worksheet.cell(row=2, column=2)
print(f'cell(インデックスから取得)のデータ型: {type(cell_22)}')
print(f'cell_22: {cell_22}')
print('------------------------------------------')
# ロードしたExcelファイルを閉じる
workbook.close()
【実行結果】
cell(座標から単一取得)のデータ型: <class 'openpyxl.cell.cell.Cell'>
cell_B2: <Cell '購入リスト'.B2>
------------------------------------------
cell(座標から範囲取得)のデータ型: <class 'tuple'>
cell_B2C3: ((<Cell '購入リスト'.B2>, <Cell '購入リスト'.C2>), (<Cell '購入リスト'.B3>, <Cell '購入リスト'.C3>))
------------------------------------------
cell(インデックスから取得)のデータ型: <class 'openpyxl.cell.cell.Cell'>
cell_22: <Cell '購入リスト'.B2>
------------------------------------------
【説明】
Worksheet
オブジェクトの座標をworksheet['座標']
のように指定すれば、Cell
オブジェクトを取得することができます。- 座標は単一、範囲どちらでも指定が可能です。
ただし、単一の場合は単一のCell
オブジェクトが返ります。範囲の場合は、範囲内のCell
オブジェクトが入ったタプルが返ります。 Worksheet
オブジェクトのcell()
でrow
に行インデックス(int
型)、column
に列インデックス(int
型)を指定すれば、インデックスからもCell
オブジェクトを取得することができます。- 座標は行は1スタートの数字、列はA~ZZのアルファベットで指定できます。インデックスは行、列ともに1スタートの数字で指定できます。
Worksheet
オブジェクトは「openpyxl.worksheet.worksheet
モジュール」内のWorksheet
クラスで定義されています。Cell
オブジェクトは「openpyxl.cell.cell
モジュール」内のCell
クラスで定義されています。
関連情報
【openpxxlライブラリのまとめ】
【Pythonライブラリのまとめ】
参考
以上!
コメント