動作検証バージョン:Windows 10 Pro(64-bit)+ Python 3.11.1(64-bit) + OpenPyXL 3.0.10
検索キーワード
「openPyXL 列名 取得」
をきっかけにして、Cellオブジェクトのcolumn_letter属性で、列のアルファベットを取得できることを記事にしました。
数値をアルファベットにするget_column_letter()関数のサンプル
実は、列番号の数値を引数に指定すると、列のアルファベットを返してくれる関数が、OpenPyXLのutilモジュールに用意されています。
以下のスクリプトを実行すると、27列目のアルファベット「AA」が出力されます。
import openpyxl
print(openpyxl.utils.get_column_letter(27))
print(openpyxl.utils.get_column_letter(27))
import文を、
from openpyxl.utils import get_column_letter
とすれば、いきなり
print(get_column_letter(27))
のようにget_column_letter()関数を呼べます。
Cell.column_letter属性はget_column_letter()関数呼んでいるだけ
先日ご紹介した、Cell.column_letter属性も内部で
@property
def column_letter(self):
return get_column_letter(self.column)
と定義されています。
get_column_letter()関数を呼んでいるだけです。
実在しないZZZまで出力可能
最近のxlsxファイルは、16384列までしか存在しませんが、get_column_letter()関数の引数には、「18278」まで指定可能です。
print(get_column_letter(18278))
を実行すると「ZZZ」が出力され、
print(get_column_letter(18279))
を実行した場合には
ValueError: Invalid column index 18279
エラーが発生します。
openpyxl.utils.cellモジュールで、以下のような辞書が用意されているためです。
_COL_STRING_CACHE = {}
_STRING_COL_CACHE = {}
for i in range(1, 18279):
col = _get_column_letter(i)
_STRING_COL_CACHE[i] = col
_COL_STRING_CACHE[col] = i
最終更新日時:2023-05-23 08:53
[スポンサードリンク]
- Newer:xlwingsでブックを新規に作成するには-xw.Book()関数
- Older:xlwingsでリストをセルに入力する
Home » Python » OpenPyXLの使い方 » 列番号をアルファベットにする関数もOpenPyXLにはある-get_column_letter()関数