worksheet.worksheet【ワークシート】モジュール

メモ ( 概要 外部リンク )
ワークシート関連: ワークシート名 ウィンドウ枠 タブの色 ワークシートの表示・非表示 行・列の挿入・削除・非表示・データ追加 ページ設定 改ページ ビュー・ズーム倍率 等
セル関連: セルの参照 セル結合・セル結合解除 セルのサイズ 入力規則 条件付き書式
クラス: Worksheet【ワークシート】 ( クラス定義 定数 操作 プロパティ メソッド )

メモ

概要

ワークシート名

ウィンドウ枠

ワークシートのタブ色

ワークシートの表示・非表示

行・列の挿入・削除・非表示・データ追加

ページ設定

改ページ

ビュー・ズーム倍率 等

以下 Cell【セル】関連

セルの参照

セル結合・セル結合解除

セルのサイズ (列の幅・行の高さ)

入力規則

条件付き書式


Worksheet【ワークシート】クラス

クラス定義

クラス備考
親:openpyxl.workbook.child._WorkbookChild
class Worksheet(
    parent,
    title=None)
ワークシート
parent親ワークブック
titleシート名

※直接生成せずに Workbook【ワークブック】create_sheet【ワークシート作成】メソッドを使用

定数

インポート:from openpyxl.worksheet.worksheet import Worksheet

定数備考
改ページ
BREAK_NONE0
BREAK_ROW1
BREAK_COLUMN2
シートの表示状態〔sheet_state【表示状態】
SHEETSTATE_VISIBLE'visible'表示
SHEETSTATE_HIDDEN'hidden'非表示
SHEETSTATE_VERYHIDDEN'veryHidden'非表示 (マクロ等からのみ再表示可)
用紙サイズ (設定:int 変換)〔ページ設定
PAPERSIZE_LETTER'1'レター
PAPERSIZE_LETTER_SMALL'2'レター スモール
PAPERSIZE_TABLOID'3'タブロイド
PAPERSIZE_LEDGER'4'レジャー
PAPERSIZE_LEGAL'5'リーガル
PAPERSIZE_STATEMENT'6'ステートメント
PAPERSIZE_EXECUTIVE'7'エグゼクティブ
PAPERSIZE_A3'8'A3
PAPERSIZE_A4'9'A4
PAPERSIZE_A4_SMALL'10'A4 スモール
PAPERSIZE_A5'11'A5
(参考)70A6
用紙方向〔ページ設定
ORIENTATION_PORTRAIT'portrait'縦方向
ORIENTATION_LANDSCAPE'landscape'横方向
(参考)'default'デフォルト

操作

操作備考
worksheet[address]
セル参照
addressアドレス
単一セル (例:'B3')
セル範囲 (例:'B3:D5')
単一行 (例:'3')
複数行 (例:'3:5')
単一列 (例:'B')
複数列 (例:'B:D')
※行指定 または 列指定の最大位置は、データ(書式を含む)が存在する範囲
worksheet [address] = value
※以下と同等
worksheet [address] .value = value
cell .value = value
セル値 設定 (Cell【セル】value【値】プロパティの省略形)
address単一セルアドレス (例:'B3')
for row in worksheet 繰り返し処理
row行情報 (Cell【セル】のtuple)
'A1' から max_row【最大行インデックス】max_column【最大列インデックス】 の範囲
del worksheet [address] セルデータ(書式を含む) 削除
address単一セルアドレス (例:'B3')

プロパティ

プロパティ備考
active_cell アクティブ セル
auto_filterAutoFilterオートフィルタ
col_breaksColBreak 改ページ リスト (列)〔改ページ
column_dimensions[ col ].

col:列文字列 ('A'~)

※参考:
utils.get_column_letter
【列番号→列文字列 変換】
DimensionHolder列情報
auto_sizeboolbestFit【幅自動調節】のエイリアス
bestFitbool幅自動調節 (動作不可)
collapsedboolグループの折りたたみ
customWidth
hiddenbool非表示の有無
indexstr列文字列 ('A'~)
maxint
minint
outline_levelグループのアウトライン レベル
outlineLeveloutline_level【グループのアウトライン レベル】のエイリアス
style
visiblebool(表示の有無)
widthfloat列の幅 (文字数単位)
columns
conditional_formatting ConditionalFormattingList 条件付き書式リスト〔条件付き書式
data_validations DataValidationList 入力規則リスト〔入力規則
dimensions
evenFooterHeaderFooterItem フッター (偶数ページ)〔ヘッダー・フッター
HeaderFooter.evenFooter へのショートカット
※親クラスの_WorkbookChild で定義
evenHeaderHeaderFooterItem ヘッダー (偶数ページ)〔ヘッダー・フッター
HeaderFooter.evenHeader へのショートカット
※親クラスの_WorkbookChild で定義
firstFooterHeaderFooterItem フッター (先頭ページ)〔ヘッダー・フッター
HeaderFooter.firstFooter へのショートカット
※親クラスの_WorkbookChild で定義
firstHeaderHeaderFooterItem ヘッダー (先頭ページ)〔ヘッダー・フッター
HeaderFooter.firstHeader へのショートカット
※親クラスの_WorkbookChild で定義
formula_attributes{}
freeze_panes str
(None:枠の固定なし)
ウィンドウ枠の固定セルアドレス
〔例:ウィンドウ枠
※設定は Cell【セル】指定も可
・列固定:1行目を指定 (例:'C1')
・行固定:1列目を指定 (例:'A3')
・セル固定:上記以外 (例:'B2')
・取得:セルアドレス形式 (None:枠の固定なし)
・解除:'A1'・None (不正な情報が残る為、下記も指定)
[1] ws.sheet_view.selection = [ws.sheet_view.selection[0]]
[2] ws.sheet_view.selection[0].pane = 'topLeft'
(参考: Trying to unfreeze panes with openpyxl causes damages (英語))
legacy_drawingNone
HeaderFooter. (一部抜粋)HeaderFooter ヘッダー・フッター〔詳細
※親クラスの_WorkbookChild で定義
evenFooter HeaderFooterItemフッター (偶数ページ)
evenHeader HeaderFooterItemヘッダー (偶数ページ)
firstFooter HeaderFooterItemフッター (先頭ページ)
firstHeader HeaderFooterItemヘッダー (先頭ページ)
oddFooter HeaderFooterItemフッター (奇数/共通ページ)
oddHeader HeaderFooterItemヘッダー (奇数/共通ページ)
max_column int (1~) 最大列インデックス
※データ(書式を含む)が存在する範囲
max_row int (1~) 最大行インデックス
※データ(書式を含む)が存在する範囲
merged_cell_ranges
merged_cellsMultiCellRange
min_column int (1~) 最小列インデックス
※データ(書式を含む)が存在する範囲
min_row int (1~) 最小行インデックス
※データ(書式を含む)が存在する範囲
oddFooterHeaderFooterItem フッター (奇数/共通ページ)〔ヘッダー・フッター
HeaderFooter.oddFooter へのショートカット
※親クラスの_WorkbookChild で定義
oddHeaderHeaderFooterItem ヘッダー (奇数/共通ページ)〔ヘッダー・フッター
HeaderFooter.oddHeader へのショートカット
※親クラスの_WorkbookChild で定義
orientation(印刷の向き)〔ページ設定
page_breaks 3.0 tuple(RowBreak, ColBreak) 改ページ リスト [削除予定]〔改ページ
下記の tuple
row_breaks【改ページ リスト (行)】
col_breaks【改ページ リスト (列)】
page_margins PageMargins 余白 (ページ設定)
page_setup PrintPageSetup ページ設定
paper_size(用紙サイズ)〔ページ設定
print_areastr 印刷範囲〔ページ設定
print_options PrintOptions 印刷オプション〔ページ設定
print_title_colsstr 印刷タイトル列 (例:'B:D')〔ページ設定
print_title_rowsstr 印刷タイトル行 (例:'2:4')〔ページ設定
print_titles str 印刷タイトル行列 (例:'2:4,B:D')〔ページ設定
protectionSheetProtectionシート保護
row_breaksRowBreak 改ページ リスト (行)〔改ページ
row_dimensions[ row ].

row:行番号 (1~)
DimensionHolder行情報
collapsedグループの折りたたみ
customFormat
customHeight
heightfloatht【行の高さ (ポイント単位)】のエイリアス
hiddenbool非表示の指定
htfloat行の高さ (ポイント単位)
index行番号 (1~)
outline_levelグループのアウトライン レベル
outlineLeveloutline_level【グループのアウトライン レベル】のエイリアス
rindex【行番号】のエイリアス
sstyle_idのエイリアス
spans
style_id
thickBotbool
thickTopbool
visiblebool(表示の有無)
rows
scenariosScenarioList
selected_cell
sheet_formatSheetFormatProperties
sheet_properties.WorksheetProperties
codeNamestr
enableFormatConditionsCalculationbool
filterModebool
outlinePrOutline
pageSetUpPrPageSetupProperties
publishedbool
syncHorizontalbool
syncRefstr
syncVerticalbool
tabColorColor (None:初期色)タブの色
tagname= 'sheetPr'
transitionEntryElements
transitionEvaluationbool
sheet_statestr 表示状態
備考定数
'visible'表示SHEETSTATE_VISIBLE
'hidden'非表示SHEETSTATE_HIDDEN
'veryHidden'非表示 (マクロ等からのみ再表示可)SHEETSTATE_VERYHIDDEN
sheet_view SheetView シートビュー
(views【シートビュー リスト】の先頭ビューへのショートカット)
show_gridlines bool 枠線の表示有無
show_summary_below
show_summary_right
tables
titleシート名
※親クラスの_WorkbookChild で定義
values
views SheetViewList シートビュー リスト

メソッド

メソッド備考
add_chart(
    chart,
    anchor=None)
グラフ追加
add_data_validation(
    data_validation)
入力規則 追加〔入力規則
data_validation (DataValidation)入力規則
add_image(
    img,
    anchor=None)
図追加
add_pivot(pivot) ピボット追加
add_table(table) テーブル追加
append(
    iterable)
データ追加 (値の並びを下部に追加)
iterableイテラブル オブジェクト (値の並び)
    dict:キーを列識別子(1~ | 'A'~)として追加
    list | tuple | range | generator:先頭列から追加
calculate_dimension() データを含むセルの最小範囲取得
戻り値 (str)セルの最小範囲 (例:'B3:D5')
cell(
    row,
    column,
    value=None)
セルオブジェクト取得 (値設定可)
戻り値Cell【セル】
row (int)
column (int)
value設定値 (省略:値設定なし)
delete_cols(
    idx,
    amount=1)
列削除
idx列番号 (削除開始)
amount列数
delete_rows(
    idx,
    amount=1)
行削除
idx行番号 (削除開始)
amount行数
insert_cols(
    idx,
    amount=1)
列挿入
idx列番号 (挿入開始)
amount列数
insert_rows(
    idx,
    amount=1)
行挿入
idx行番号 (挿入開始)
amount行数
iter_cols(
    min_col=None,
    max_col=None,
    min_row=None,
    max_row=None,
    values_only=False)
列情報ジェネレータ
戻り値列情報イテレータ
min_col (int:1~)最小列 (省略:1)
max_col (int:1~)最大列 (省略:シートの最大列)
min_row (int:1~)最小行 (省略:1)
max_row (int:1~)最大行 (省略:シートの最大行)
values_only (bool)値のみの取得指定 (True:値のみ / False:セル)
iter_rows(
    min_row=None,
    max_row=None,
    min_col=None,
    max_col=None,
    values_only=False)
行情報ジェネレータ
戻り値行情報イテレータ
min_row (int:1~)最小行 (省略:1)
max_row (int:1~)最大行 (省略:シートの最大行)
min_col (int:1~)最小列 (省略:1)
max_col (int:1~)最大列 (省略:シートの最大列)
values_only (bool)値のみの取得指定 (True:値のみ / False:セル)
merge_cells(
    range_string=None,
    start_row=None,
    start_column=None,
    end_row=None,
    end_column=None)
セル結合
range_string範囲文字列 (例:'B3:D5')
start_row (int)開始行 (1~)
start_column (int)開始列 (1~)
end_row (int)終了行 (1~)
end_column (int)終了列 (1~)
range_string (範囲文字列)を指定 または それ以外を指定
move_range(
    cell_range,
    rows=0,
    cols=0,
    translate=False)
セル移動
cell_rangeセル範囲
rows移動行数 (0<:下移動 / <0:上移動)
cols移動列数 (0<:右移動 / <0:左移動)
translate数式更新の有無
※移動先は上書き
set_printer_settings(
    paper_size,
    orientation)
プリンター設定〔ページ設定
paper_size用紙サイズ
orientation印刷の向き
unmerge_cells(
    range_string=None,
    start_row=None,
    start_column=None,
    end_row=None,
    end_column=None)
セル結合解除
range_string範囲文字列 (例:'B3:D5')
start_row (int)開始行 (1~)
start_column (int)開始列 (1~)
end_row (int)終了行 (1~)
end_column (int)終了列 (1~)
range_string (範囲文字列)を指定 または それ以外を指定

ワークシート名

from openpyxl import Workbook

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active

# ワークシート名
print(ws.title)
# 出力:Sheet
ws.title = 'SheetX'
wb.create_sheet('SheetY')
print(wb.sheetnames)
# 出力:['SheetX', 'SheetY']

# ワークブック保存
wb.save(WORKBOOK)

ウィンドウ枠

from openpyxl import Workbook

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()

# 列固定 (セルアドレス指定)
ws = wb.active
ws.title = 'SheetA-1'
ws['C2'] = '列固定 (セルアドレス指定)'
print(ws.freeze_panes)
# 出力:None
ws.freeze_panes = 'C1'
print(ws.freeze_panes)
# 出力:C1

# 列固定 (Cell【セル】指定)
ws = wb.create_sheet('SheetA-2')
ws['C2'] = '列固定:Cell【セル】指定'
print(ws.freeze_panes)
# 出力:None
cell = ws['C1']
ws.freeze_panes = cell
print(ws.freeze_panes)
# 出力:C1

# 行固定 (セルアドレス指定)
ws = wb.create_sheet('SheetB-1')
ws['B2'] = '行固定 (セルアドレス指定)'
ws.freeze_panes = 'A3'
print(ws.freeze_panes)
# 出力:A3

# 行固定 (Cell【セル】指定)
ws = wb.create_sheet('SheetB-2')
ws['B2'] = '行固定 (Cell【セル】指定)'
cell = ws['A3']
ws.freeze_panes = cell
print(ws.freeze_panes)
# 出力:A3

# 行・列 固定 (セルアドレス指定)
ws = wb.create_sheet('SheetC-1')
ws['B2'] = '行・列 固定 (セルアドレス指定)'
ws.freeze_panes = 'B3'
print(ws.freeze_panes)
# 出力:B3

# 行・列 固定 (Cell【セル】指定)
ws = wb.create_sheet('SheetC-2')
ws['B2'] = '行・列 固定:Cell【セル】指定'
cell = ws['B3']
ws.freeze_panes = cell
print(ws.freeze_panes)
# 出力:B3

# ウィンドウ枠固定 → 解除 (セルアドレス指定)
ws = wb.create_sheet('SheetD-1')
ws['B2'] = 'ウィンドウ枠固定 → 解除 (セルアドレス指定)'
ws.freeze_panes = 'B3'
print(ws.freeze_panes)
# 出力:B3
ws.freeze_panes = 'A1'
ws.sheet_view.selection = [ws.sheet_view.selection[0]]
ws.sheet_view.selection[0].pane = 'topLeft'
print(ws.freeze_panes)
# 出力:None

# ウィンドウ枠固定 → 解除 (Cell【セル】指定)
ws = wb.create_sheet('SheetD-2')
ws['B2'] = 'ウィンドウ枠固定 → 解除 (Cell【セル】指定)'
cell = ws['B3']
ws.freeze_panes = cell
print(ws.freeze_panes)
# 出力:B3
cell = ws['A1']
ws.freeze_panes = cell
ws.sheet_view.selection = [ws.sheet_view.selection[0]]
ws.sheet_view.selection[0].pane = 'topLeft'
print(ws.freeze_panes)
# 出力:None

# ウィンドウ枠固定 → 解除 (None 指定)
ws = wb.create_sheet('SheetD-3')
ws['B2'] = 'ウィンドウ枠固定 → 解除 (None 指定)'
ws.freeze_panes = 'B3'
print(ws.freeze_panes)
# 出力:B3
ws.freeze_panes = None
ws.sheet_view.selection = [ws.sheet_view.selection[0]]
ws.sheet_view.selection[0].pane = 'topLeft'
print(ws.freeze_panes)
# 出力:None

# ワークブック保存
wb.save(WORKBOOK)

列固定 (セルアドレス指定)のサンプル画像 列固定 (Cell【セル】指定)のサンプル画像

行固定 (セルアドレス指定)のサンプル画像 行固定 (Cell【セル】指定)のサンプル画像

行・列 固定 (セルアドレス指定)のサンプル画像 行・列 固定 (Cell【セル】指定)のサンプル画像

ウィンドウ枠固定 → 解除 (セルアドレス指定)のサンプル画像 ウィンドウ枠固定 → 解除 (Cell【セル】指定)のサンプル画像 ウィンドウ枠固定 → 解除 (None 指定)のサンプル画像


ワークシートのタブ色
ワークシートの表示・非表示

from openpyxl import Workbook
from openpyxl.worksheet.worksheet import Worksheet

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()

# タブ色 設定
sheet = wb.create_sheet('SheetRed')
sheet.sheet_properties.tabColor = '00FF0000'
sheet = wb.create_sheet('SheetGreen')
sheet.sheet_properties.tabColor = '00008000'
sheet = wb.create_sheet('SheetBlue')
sheet.sheet_properties.tabColor = '000000FF'

# タブ色 参照
for sheet in wb:
    tabcolor = sheet.sheet_properties.tabColor
    print(f'[{sheet.title}]')
    if tabcolor is not None:
        print(f'{tabcolor.type} {tabcolor.rgb}')
# 出力:
# [Sheet]
# [SheetRed]
# rgb 00FF0000
# [SheetGreen]
# rgb 00008000
# [SheetBlue]
# rgb 000000FF

# 表示状態
sheet = wb.create_sheet('Sheet (hidden)')
sheet.sheet_state = Worksheet.SHEETSTATE_HIDDEN
sheet = wb.create_sheet('Sheet (veryHidden)')
sheet.sheet_state = Worksheet.SHEETSTATE_VERYHIDDEN
for sheet in wb.worksheets:
    print(f'{sheet.title}:{sheet.sheet_state}')
# 出力:
# Sheet:visible
# SheetRed:visible
# SheetGreen:visible
# SheetBlue:visible
# Sheet (hidden):hidden
# Sheet (veryHidden):veryHidden

# ワークブック保存
wb.save(WORKBOOK)

ワークシートのタブ色のサンプル画像


行・列の挿入・削除・非表示・データ追加

from openpyxl import Workbook
from openpyxl.styles import Font
from openpyxl.utils import get_column_letter

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active

# データ設定
for i in range(3, 12):
    ws[f'B{i}'] = f'B-{i}'
for i in range(2, 11):
    letter = get_column_letter(i)
    ws[f'{letter}2'] = f'{letter}-2'
font = Font(color='00FF0000')
for adrs in ['B4', 'B7', 'B8', 'B11', 'B2', 'F2', 'G2', 'J2']:
    ws[adrs].font = font

# 行 削除
ws.delete_rows(5, 2)
# 行 追加
ws.insert_rows(6, 3)
# 行 非表示
ws.row_dimensions[10].hidden = True
ws.row_dimensions[11].hidden = True

# 列 削除
ws.delete_cols(3, 3)  # C D E
# 列 追加
ws.insert_cols(4, 2)
# 列 非表示
ws.column_dimensions['G'].hidden = True
ws.column_dimensions['H'].hidden = True

# データ追加
data_1 = ['Data1-1', 'Data1-2', 'Data1-3']
ws.append(data_1)
data_2 = {
    2: 'Data2-2',
    3: 'Data2-3',
    4: 'Data2-4',
}
ws.append(data_2)
data_3 = {
    'C': 'Data3-3',
    'D': 'Data3-4',
    'E': 'Data3-5',
}
ws.append(data_3)

# ワークブック保存
wb.save(WORKBOOK)

行・列の挿入・削除・非表示・データ追加のサンプル画像


セルの参照 (1/3)

from openpyxl import Workbook

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active

# 単一セル参照
cell = ws['B2']
print(cell)
# 出力:<Cell 'Sheet'.B2>
cell.value = '単一セル'

# 単一セル参照 (Cell)
cell = ws.cell(4, 2)
print(cell)
# 出力:<Cell 'Sheet'.B4>
cell.value = 'Cell'

# セル範囲選択
cells = ws['D2:F4']
print(type(cells))
# 出力:<class 'tuple'>
print(cells)
# 出力:
# ((< Cell 'Sheet'.D2 >, < Cell 'Sheet'.E2 >, < Cell 'Sheet'.F2 >),
#  (< Cell 'Sheet'.D3 >, < Cell 'Sheet'.E3 >, < Cell 'Sheet'.F3 >),
#  (< Cell 'Sheet'.D4 >, < Cell 'Sheet'.E4 >, < Cell 'Sheet'.F4 >))
for cols in cells:
    for cell in cols:
        cell.value = 'セル範囲'

# 単一行参照
cells = ws['6']
print(cells)
# 出力:
# (<Cell 'Sheet'.A6>, <Cell 'Sheet'.B6>, <Cell 'Sheet'.C6>,
#  <Cell 'Sheet'.D6>, <Cell 'Sheet'.E6>, <Cell 'Sheet'.F6>)
for cell in cells:
    cell.value = '単一行'

# 複数行参照
cells = ws['8:10']
print(cells)
# 出力:
# ((<Cell 'Sheet'.A8>, <Cell 'Sheet'.B8>, <Cell 'Sheet'.C8>,
#   <Cell 'Sheet'.D8>, <Cell 'Sheet'.E8>, <Cell 'Sheet'.F8>),
#  (<Cell 'Sheet'.A9>, <Cell 'Sheet'.B9>, <Cell 'Sheet'.C9>,
#   <Cell 'Sheet'.D9>, <Cell 'Sheet'.E9>, <Cell 'Sheet'.F9>),
#  (<Cell 'Sheet'.A10>, <Cell 'Sheet'.B10>, <Cell 'Sheet'.C10>,
#   <Cell 'Sheet'.D10>, <Cell 'Sheet'.E10>, <Cell 'Sheet'.F10>))
for cols in cells:
    for cell in cols:
        cell.value = '複数行'

# 単一列参照
cells = ws['H']
print(cells)
# 出力:
# (<Cell 'Sheet'.H1>, <Cell 'Sheet'.H2>, <Cell 'Sheet'.H3>,
#  <Cell 'Sheet'.H4>, <Cell 'Sheet'.H5>, <Cell 'Sheet'.H6>,
#  <Cell 'Sheet'.H7>, <Cell 'Sheet'.H8>, <Cell 'Sheet'.H9>,
#  <Cell 'Sheet'.H10>)
for cell in cells:
    cell.value = '単一列'

# 複数列参照
cells = ws['J:L']
print(cells)
# 出力:
# ((<Cell 'Sheet'.J1>, <Cell 'Sheet'.J2>, <Cell 'Sheet'.J3>,
#   <Cell 'Sheet'.J4>, <Cell 'Sheet'.J5>, <Cell 'Sheet'.J6>,
#   <Cell 'Sheet'.J7>, <Cell 'Sheet'.J8>, <Cell 'Sheet'.J9>,
#   <Cell 'Sheet'.J10>),
#  (<Cell 'Sheet'.K1>, <Cell 'Sheet'.K2>, <Cell 'Sheet'.K3>,
#   <Cell 'Sheet'.K4>, <Cell 'Sheet'.K5>, <Cell 'Sheet'.K6>,
#   <Cell 'Sheet'.K7>, <Cell 'Sheet'.K8>, <Cell 'Sheet'.K9>,
#   <Cell 'Sheet'.K10>),
#  (<Cell 'Sheet'.L1>, <Cell 'Sheet'.L2>, <Cell 'Sheet'.L3>,
#   <Cell 'Sheet'.L4>, <Cell 'Sheet'.L5>, <Cell 'Sheet'.L6>,
#   <Cell 'Sheet'.L7>, <Cell 'Sheet'.L8>, <Cell 'Sheet'.L9>,
#   <Cell 'Sheet'.L10>))
for cols in cells:
    for cell in cols:
        cell.value = '複数列'

# ワークブック保存
wb.save(WORKBOOK)

セルの参照 (1/3)のサンプル画像


セルの参照 (2/3) ワークシート繰り返し処理

from openpyxl import Workbook

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active

# ワークシート繰り返し処理
for row in ws:
    print(row)
# 出力:(なし)
ws['C3'] = 'dummy'
for row in ws:
    print(row)
    for cell in row:
        cell.value = 'VALUE'
# 出力:
# (<Cell 'Sheet'.A1>, <Cell 'Sheet'.B1>, <Cell 'Sheet'.C1>)
# (<Cell 'Sheet'.A2>, <Cell 'Sheet'.B2>, <Cell 'Sheet'.C2>)
# (<Cell 'Sheet'.A3>, <Cell 'Sheet'.B3>, <Cell 'Sheet'.C3>)

# ワークブック保存
wb.save(WORKBOOK)

セルの参照 (2/3)のサンプル画像


セルの参照 (3/3) 行・列情報イテレータ

from openpyxl import Workbook

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active

# 1列
idx = 1
for col in ws.iter_cols(2, 2, 2, 4):
    print(col)
    for cell in col:
        cell.value = f'{idx} {cell.column_letter}-{cell.row}'
        idx += 1
# 出力:
# (<Cell 'Sheet'.B2>, <Cell 'Sheet'.B3>, <Cell 'Sheet'.B4>)

# 複数列
idx = 1
for col in ws.iter_cols(4, 5, 2, 4):
    print(col)
    for cell in col:
        cell.value = f'{idx} {cell.column_letter}-{cell.row}'
        idx += 1
# 出力:
# (<Cell 'Sheet'.D2>, <Cell 'Sheet'.D3>, <Cell 'Sheet'.D4>)
# (<Cell 'Sheet'.E2>, <Cell 'Sheet'.E3>, <Cell 'Sheet'.E4>)

# 1行
idx = 1
for row in ws.iter_rows(7, 7, 2, 4):
    print(row)
    for cell in row:
        cell.value = f'{idx} {cell.column_letter}-{cell.row}'
        idx += 1
# 出力:
# (<Cell 'Sheet'.B7>, <Cell 'Sheet'.C7>, <Cell 'Sheet'.D7>)

# 複数行
idx = 1
for row in ws.iter_rows(9, 10, 2, 4):
    print(row)
    for cell in row:
        cell.value = f'{idx} {cell.column_letter}-{cell.row}'
        idx += 1
# 出力:
# (<Cell 'Sheet'.B9>, <Cell 'Sheet'.C9>, <Cell 'Sheet'.D9>)
# (<Cell 'Sheet'.B10>, <Cell 'Sheet'.C10>, <Cell 'Sheet'.D10>)

# ワークブック保存
wb.save(WORKBOOK)

セルの参照 (3/3)のサンプル画像


セル結合・セル結合解除

from openpyxl import Workbook
from openpyxl.styles import Border, Side, borders

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active

# 罫線
ws.column_dimensions['B'].width = 30
COLOR_BORDER = '000000FF'
side = Side(
    borders.BORDER_THICK,
    COLOR_BORDER)
border = Border(side, side, side, side)

# セル結合 (範囲文字列)
ws.merge_cells('B2:D4')
ws['B2'] = 'セル結合 (範囲文字列)'
for row in ws['B2:D4']:
    for cell in row:
        cell.border = border

# セル結合 (行・列 指定)
ws.merge_cells(
    start_row=6,
    start_column=2,
    end_row=8,
    end_column=4)
ws.cell(6, 2, 'セル結合 (行・列 指定)')
for row in range(6, 9):
    for col in range(2, 5):
        cell = ws.cell(row, col)
        cell.border = border

# セル結合解除 (範囲文字列)
ws.merge_cells('B10:D12')
ws['B10'] = 'セル結合'
ws.unmerge_cells('B10:D12')
ws['B10'] = 'セル結合解除 (範囲文字列)'
for row in ws['B10:D12']:
    for cell in row:
        cell.border = border

# セル結合解除 (行・列 指定)
ws.merge_cells(
    start_row=14,
    start_column=2,
    end_row=16,
    end_column=4)
ws.cell(14, 2, 'セル結合')
ws.unmerge_cells(
    start_row=14,
    start_column=2,
    end_row=16,
    end_column=4)
ws.cell(14, 2, 'セル結合解除 (行・列 指定)')
for row in range(14, 17):
    for col in range(2, 5):
        cell = ws.cell(row, col)
        cell.border = border

# ワークブック保存
wb.save(WORKBOOK)

セル結合・セル結合解除のサンプル画像


セルのサイズ (列の幅・行の高さ)

from openpyxl import Workbook
from openpyxl.utils.cell import get_column_letter

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active

# セルのサイズ (列の幅・行の高さ)
ws['B2'] = 'セルのサイズ'
# 列の幅 (文字数単位)
ws.column_dimensions['B'].width = 20
letter = get_column_letter(3)
print(letter)
# 出力:C
ws.column_dimensions[letter].width = 2
# 行の高さ (ポイント単位)
ws.row_dimensions[2].height = 40

# ワークブック保存
wb.save(WORKBOOK)

セルサイズのサンプル画像