Home » Python » OpenPyXLの使い方 » 列番号をアルファベットにする関数もOpenPyXLにはある-get_column_letter()関数

列番号をアルファベットにする関数もOpenPyXLにはある-get_column_letter()関数

動作検証バージョン: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))

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

[スポンサードリンク]

Home » Python » OpenPyXLの使い方 » 列番号をアルファベットにする関数もOpenPyXLにはある-get_column_letter()関数

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

検索


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

.