utils.cell【セル関連ユーティリティ】モジュール
メモ ( 概要 モジュール内定義 (関数一覧) ) 関数 例
メモ
概要
- utils【ユーティリティ】パッケージ の Cell【セル】関連のユーティリティ モジュール
- インポート
- utils パッケージ で指定済の為、openpyxl.utils からインポート可
但し、coordinate_from_string は未指定の為、openpyxl.utils.cell のみ有効
- utils パッケージ で指定済の為、openpyxl.utils からインポート可
- 関連
モジュール内定義
- 関数
外部リンク
関数
関数 | 備考 | 例 |
---|---|---|
absolute_coordinate( coord_string) | セルアドレス ⇒ 絶対セルアドレス 変換 戻り値 (str)絶対セルアドレス coord_string (str)セルアドレス | 〔 使用例 〕 'B3' ⇒ '$B$3' |
cols_from_range( range_string) | セル範囲アドレス ⇒ 列単位セルアドレス 戻り値列単位セルアドレス ジェネレータ range_stringセル範囲アドレス (関連:rows_from_range【セル範囲アドレス ⇒ 行単位セルアドレス】) | 〔 使用例 〕 A1:B3 ⇒ [1] ('A1', 'A2', 'A3') [2] ('B1', 'B2', 'B3') |
column_index_from_string( str_col) | 列文字列 ⇒ 列番号 変換 戻り値 (int)列番号 str_col列文字列 (関連:get_column_letter【列番号 ⇒ 列文字列 変換】) | 〔 使用例 〕 'B' ⇒ 2 |
coordinate_from_string( coord_string) | セルアドレス ⇒ 列文字列・行番号 変換 戻り値 (tuple) (列文字列, 行番号) の tuple【タプル】 coord_string (str)セルアドレス | 〔 使用例 〕 'B3' ⇒ ('B', 3) |
coordinate_to_tuple( coordinate) | セルアドレス ⇒ 行列番号 変換 戻り値 (tuple) (行番号, 列番号) の tuple【タプル】 注) 行番号が先 coordinate (str)セルアドレス | 〔 使用例 〕 A2 ⇒ (2, 1) |
get_column_interval( start, end) | 列範囲 ⇒ 列文字列リスト 変換 戻り値 (list)列文字列のリスト start (str | int)開始列 end (str | int)終了列 | 〔 使用例 〕 ('A', 'C') ⇒ ['A', 'B', 'C'] (4, 6) ⇒ ['D', 'E', 'F'] |
get_column_letter( idx) | 列番号 ⇒ 列文字列 変換 戻り値 (str)列文字列 idx (int)列番号 (関連:column_index_from_string【列文字列 ⇒ 列番号 変換】) | 〔 使用例 〕 2 ⇒ 'B' |
quote_sheetname( sheetname) | シート名シングルクォート囲み 戻り値 (str)シングルクォートで囲まれたシート名 sheetname (str)シート名 シート名を含んだセルアドレスで使用 (参照:workbook.defined_name【名前定義】モジュール) | 〔 使用例 〕 "Sheet X" ⇒ "'Sheet X'" |
range_boundaries( range_string) | セル範囲アドレス ⇒ 行列番号 変換 戻り値下記 tuple【タプル】 (不定値:None) (左上の列番号, 左上の行番号, 右下の列番号, 右下の行番号) range_stringセル範囲アドレス | 〔 使用例 〕 A2:C4 ⇒ (1, 2, 3, 4) |
range_to_tuple( range_string) | セル範囲アドレス ⇒ 行列番号 変換 (シート名対応) 戻り値下記 tuple【タプル】 (不定値:None) (シート名, (左上の列番号, 左上の行番号, 右下の列番号, 右下の行番号)) range_stringシート名付きセル範囲アドレス | 〔 使用例 〕 SheetX!A2:C4 ⇒ ('SheetX', (1, 2, 3, 4)) |
rows_from_range( range_string) | セル範囲アドレス ⇒ 行単位セルアドレス 戻り値行単位セルアドレス ジェネレータ range_stringセル範囲アドレス (関連:cols_from_range【セル範囲アドレス ⇒ 列単位セルアドレス】) | 〔 使用例 〕 A1:B3 ⇒ [1] ('A1', 'B1') [2] ('A2', 'B2') [3] ('A3', 'B3') |
例
列変換
column_index_from_string【列文字列 ⇒ 列番号 変換】
get_column_letter【列番号 ⇒ 列文字列 変換】
get_column_interval【列範囲 ⇒ 列文字列リスト 変換】
from openpyxl.utils import (
column_index_from_string,
get_column_letter,
get_column_interval,
)
# column_index_from_string【列文字列 ⇒ 列番号 変換】
list_letter = ['A', 'Z', 'AA', 'ZZ', 'AAA']
for str_col in list_letter:
idx = column_index_from_string(str_col)
print(str_col, '⇒', idx)
# 出力:
# A ⇒ 1
# Z ⇒ 26
# AA ⇒ 27
# ZZ ⇒ 702
# AAA ⇒ 703
# get_column_letter【列番号 ⇒ 列文字列 変換】
list_idx = [1, 26, 27, 702, 703]
for idx in list_idx:
letter = get_column_letter(idx)
print(f'{idx} ⇒ {letter}')
# 出力:
# 1 ⇒ A
# 26 ⇒ Z
# 27 ⇒ AA
# 702 ⇒ ZZ
# 703 ⇒ AAA
# get_column_interval【列範囲 ⇒ 列文字列リスト 変換】
list_start_end = [('A', 'C'), ('B', 4), (3, 'E'), (4, 6), (24, 27)]
for start, end in list_start_end:
list_col = get_column_interval(start, end)
print(f'({start}, {end}) ⇒ {list_col}')
# 出力:
# (A, C) ⇒ ['A', 'B', 'C']
# (B, 4) ⇒ ['B', 'C', 'D']
# (3, E) ⇒ ['C', 'D', 'E']
# (4, 6) ⇒ ['D', 'E', 'F']
# (24, 27) ⇒ ['X', 'Y', 'Z', 'AA']
セルアドレス分割
coordinate_from_string【セルアドレス ⇒ 列文字列・行番号 変換】
coordinate_to_tuple【セルアドレス ⇒ 行列番号 変換】
from openpyxl.utils.cell import coordinate_from_string
from openpyxl.utils import coordinate_to_tuple
# coordinate_from_string【セルアドレス ⇒ 列文字列・行番号 変換】
list_coord = ['A1', 'Z99', 'ZZ99']
for coord_string in list_coord:
tpl = coordinate_from_string(coord_string)
print(f'{coord_string} ⇒ {tpl}')
# 出力:
# A1 ⇒ ('A', 1)
# Z99 ⇒ ('Z', 99)
# ZZ99 ⇒ ('ZZ', 99)
# coordinate_to_tuple【セルアドレス ⇒ 行列番号 変換】
list_coord = ['A2', 'B1', 'Z99', 'ZZ99']
for coord_string in list_coord:
tpl = coordinate_to_tuple(coord_string)
print(f'{coord_string} ⇒ {tpl}')
# 出力:
# A2 ⇒ (2, 1)
# B1 ⇒ (1, 2)
# Z99 ⇒ (99, 26)
# ZZ99 ⇒ (99, 702)
セル範囲アドレス ⇒ セルアドレス
cols_from_range【セル範囲アドレス ⇒ 列単位セルアドレス】
rows_from_range【セル範囲アドレス ⇒ 行単位セルアドレス】
from openpyxl.utils import cols_from_range, rows_from_range
# セル範囲アドレス
list_range = ['A1', 'A1:A3', 'A1:C1', 'A1:B3']
# cols_from_range【セル範囲アドレス ⇒ 列単位セルアドレス】
for range_string in list_range:
print(f'{range_string} ⇒')
for cols in cols_from_range(range_string):
print(cols)
print()
# 出力:
# A1 ⇒
# ('A1',)
#
# A1:A3 ⇒
# ('A1', 'A2', 'A3')
#
# A1:C1 ⇒
# ('A1',)
# ('B1',)
# ('C1',)
#
# A1:B3 ⇒
# ('A1', 'A2', 'A3')
# ('B1', 'B2', 'B3')
# rows_from_range【セル範囲アドレス ⇒ 行単位セルアドレス】
for range_string in list_range:
print(f'{range_string} ⇒')
for rows in rows_from_range(range_string):
print(rows)
print()
# 出力:
# A1 ⇒
# ('A1',)
#
# A1:A3 ⇒
# ('A1',)
# ('A2',)
# ('A3',)
#
# A1:C1 ⇒
# ('A1', 'B1', 'C1')
#
# A1:B3 ⇒
# ('A1', 'B1')
# ('A2', 'B2')
# ('A3', 'B3')
セル範囲アドレス ⇒ 行列番号
range_boundaries【セル範囲アドレス ⇒ 行列番号 変換】
range_to_tuple【セル範囲アドレス ⇒ 行列番号 変換 (シート名対応)】
from openpyxl.utils.cell import range_boundaries, range_to_tuple
# range_boundaries【セル範囲アドレス ⇒ 行列番号 変換】
list_cells = [
'A2', 'A2:C4', 'A2:A4', 'A2:C2',
'B', 'B:D', '2', '2:4', '$A$2:$C$4',
]
for range_string in list_cells:
conv = range_boundaries(range_string)
print(f'{range_string} ⇒ {conv}')
# 出力:
# A2 ⇒ (1, 2, 1, 2)
# A2:C4 ⇒ (1, 2, 3, 4)
# A2:A4 ⇒ (1, 2, 1, 4)
# A2:C2 ⇒ (1, 2, 3, 2)
# B ⇒ (2, None, 2, None)
# B:D ⇒ (2, None, 4, None)
# 2 ⇒ (None, 2, None, 2)
# 2:4 ⇒ (None, 2, None, 4)
# range_to_tuple【セル範囲アドレス ⇒ 行列番号 変換 (シート名対応)】
list_range = [
'SheetX!$A$2:$C$4', 'SheetY!A2:C4', "'Sheet SP'!A2:C4",
'SheetX!A:C', 'SheetX!2:4', 'SheetX!A', 'SheetX!2',
]
for range_string in list_range:
conv = range_to_tuple(range_string)
print(f'{range_string} ⇒ {conv}')
# 出力:
# SheetX!$A$2:$C$4 ⇒ ('SheetX', (1, 2, 3, 4))
# SheetY!A2:C4 ⇒ ('SheetY', (1, 2, 3, 4))
# 'Sheet SP'!A2:C4 ⇒ ('Sheet SP', (1, 2, 3, 4))
# SheetX!A:C ⇒ ('SheetX', (1, None, 3, None))
# SheetX!2:4 ⇒ ('SheetX', (None, 2, None, 4))
# SheetX!A ⇒ ('SheetX', (1, None, 1, None))
# SheetX!2 ⇒ ('SheetX', (None, 2, None, 2))
その他変換
absolute_coordinate【セルアドレス ⇒ 絶対セルアドレス 変換】
quote_sheetname【シート名シングルクォート囲み】
from openpyxl.utils import absolute_coordinate, quote_sheetname
# absolute_coordinate【セルアドレス ⇒ 絶対セルアドレス 変換】
list_coord = [
'A1', 'Z99', 'AA100', 'A1:C3',
'A:C', '1:3', 'A', '1',
'$B$3', '$B3', 'B$3']
for coord in list_coord:
abs_coord = absolute_coordinate(coord)
print(f'{coord} ⇒ {abs_coord}')
# 出力:
# A1 ⇒ $A$1
# Z99 ⇒ $Z$99
# AA100 ⇒ $AA$100
# A1:C3 ⇒ $A$1:$C$3
# A:C ⇒ $A:$C
# 1:3 ⇒ $1:$3
# A ⇒ $A
# 1 ⇒ $1
# $B$3 ⇒ $B$3
# $B3 ⇒ $B$3
# B$3 ⇒ $B$3
# quote_sheetname【シート名シングルクォート囲み】
list_sheetname = ['Sheet', "'Sheet'", 'Sheet SP', "Taro's Sheet"]
for sheetname in list_sheetname:
sheetname_quote = quote_sheetname(sheetname)
print(f'[{sheetname}] ⇒ [{sheetname_quote}]')
# 出力:
# [Sheet] ⇒ ['Sheet']
# ['Sheet'] ⇒ ['''Sheet''']
# [Sheet SP] ⇒ ['Sheet SP']
# [Taro's Sheet] ⇒ ['Taro''s Sheet']