【Python】gspreadなどを使う時にセルを数値からアルファベット形式(A1 notation)に加工する
375 語
2 分
【Python】gspreadなどを使う時にセルを数値からアルファベット形式(A1 notation)に加工する
はじまり

リサちゃん
うーむ、gspreadって、セルを範囲で指定する時、(1,2)のセル形式でセルを操作できないのかあ・・・。(1,2)のセルを(B1)みたいな感じで取得できないかなあ・・・

リサちゃん
・・・お! こんな感じかなあ。一旦「ZZZ」まで出力できればいいかなあ。
今回のソース
以下のソースが、数値形式からアルファベット形式に変換するスクリプトになります。
src.py:
def to_alpha_under_3digits(number : int) -> str: """ Number of cell this method can format is 26 x 26 x 27 = 18252. """ number_of_alphabet = 26 h = int((number - 1 - number_of_alphabet) / (number_of_alphabet * number_of_alphabet)) i = int((number - 1) / number_of_alphabet) - h * number_of_alphabet j = number - (i * number_of_alphabet) - (h * number_of_alphabet * number_of_alphabet) alpha = "" for k in h, i, j: if k != 0: alpha += chr(k + 64) return alpha
def get_cell_in_a1_notation(row_index : int, col_index : int) -> str: con_index_alpha =to_alpha_under_3digits(col_index) cell = "{1}{0}".format(str(row_index), str(con_index_alpha)) return cell
def get_range_in_a1_notation(start_row_index : int, start_col_index : int, num_rows : int, num_cols : int) -> str: start_cell = get_cell_in_a1_notation(start_row_index, start_col_index) end_row_index = start_row_index + num_rows - 1 end_col_index = start_col_index + num_cols - 1 end_cell = get_cell_in_a1_notation(end_row_index, end_col_index) return "{}:{}".format(start_cell, end_cell)
alpha_1 = to_alpha_under_3digits(1)alpha_2 = to_alpha_under_3digits(26)alpha_3 = to_alpha_under_3digits(29)alpha_4 = to_alpha_under_3digits(16784)print(alpha_1)print(alpha_2)print(alpha_3)print(alpha_4)
print("==============")
cell_1 = get_cell_in_a1_notation(1, 1)cell_2 = get_cell_in_a1_notation(10, 26)cell_3 = get_cell_in_a1_notation(15, 29)print(cell_1)print(cell_2)print(cell_3)
print("==============")
range_1 = get_range_in_a1_notation(1, 1, 10, 26)range_2 = get_range_in_a1_notation(10, 26, 15, 29)range_3 = get_range_in_a1_notation(15, 29, 20, 16784)print(range_1)print(range_2)print(range_3)AZACXUN==============A1Z10AC15==============A1:Z10Z10:BB24AC15:XVP34今回のソースについて
アルファベットに変換する(to_alpha_under_3digits())
「ZZZ」までのアルファベットに変換することが出来ます。数値で言うと、18,252列までのインデックスに適用できます。
出力例:「A」、「Z」、「AC」、「XUN」など
アルファベット形式でセルを表現する(get_cell_in_a1_notation())
アルファベットに変換したセルを使用してセルを取得します。
出力例:「A1」、「Z10」、「AC15」など。
アルファベット形式でセル範囲を表現する(get_range_in_a1_notation())
アルファベットに変換したセルを使用してセル範囲を取得します。
出力例:「A1
おしまい

リサちゃん
・・・よーし! いっちょあがり〜!
以上になります!
記事を共有
この記事が役に立ったなら、ぜひ他の人と共有してください!
【Python】gspreadなどを使う時にセルを数値からアルファベット形式(A1 notation)に加工する
https://endorphinbath.com/posts/python-gspread-number-to-a1notation/ 関連記事 スマート
1
【Python】Google Spreadsheetを編集するために初期設定からのまとめ
Code PythonからGoogle Spreadsheetを編集するために行った認証の設定を掲載します。最終的には、gspreadというモジュールで編集できるようになります。
2
Pythonまとめ
Code Pythonに関する今までの記事を一つの場所に一覧にしました。
3
【Python】.pyファイルにある関数とメソッドを全て取得する
Code Pythonで.pyファイルの中に記述されている関数およびメソッドを全て取得するスクリプトを掲載します。
4
【Python】複数の区切り文字を指定して文字列を配列に分割する
Code Pythonで文字列を配列に分割するスクリプトを掲載します。分割文字は配列で指定するように作っています。
5
【Python】文字列の先頭と末尾にあるスペース、空白文字を削除する
Code Pythonで文字列の先頭と末尾にスペース(空白文字)が混じっていることがあります。そのスペースを削除するスクリプトを掲載します。
ランダム記事 ランダム