workbook.workbook【ワークブック】モジュール

メモ ( 概要 基本操作 名前定義 組み込みセルスタイル ユーザー設定セルスタイル 外部リンク )
ワークシート関連: 参照 新規作成・コピー・移動・削除 反復処理 ワークシート・シート名 ⇔ インデックス番号 変換
Workbook【ワークブック】クラス ( クラス定義 操作 プロパティ メソッド )

メモ

概要

基本操作

名前定義

組み込みセルスタイル

ユーザー設定セルスタイル

以下 Worksheet【ワークシート】関連

ワークシートの参照

ワークシートの新規作成・コピー・移動・削除

ワークシートの反復処理

ワークシート・シート名 ⇔ インデックス番号 変換


Workbook【ワークブック】クラス

クラス定義

クラス備考
親:object
インポート:from openpyxl import Workbook (省略形)
class Workbook(
    write_only=False,
    iso_dates=False)
Workbook【ワークブック】クラス
write_only書き込み専用モード指定
    (True:書き込み専用モード / False:通常モード)
iso_dates

※:Worksheet【ワークシート】も自動作成 (シート名:'Sheet')

操作

操作備考
sheet in workbook
sheet not in workbook
存在判定
不存在判定
workbook[sheetname] worksheet【ワークシート】取得
sheetname (str)シート名
del workbook[sheetname] worksheet【ワークシート】削除
sheetname (str)シート名
for sheet in workbook : 反復処理

プロパティ

プロパティ備考
active Worksheet【ワークシート】 アクティブシート (None:なし)
chartsheets list[ Chartsheet【グラフシート】 ] Chartsheet【グラフシート】のリスト
calculationCalcProperties
code_name
data_only
defined_names DefinedNameList【名前定義リスト】名前定義リスト
defined_names.definedNamelist
tuple
名前定義シーケンス
defined_names[定義名] (下記のプロパティは抜粋) DefinedName【名前定義】
defined_names[定義名].
(範囲:ブックのみ)
attr_text
value
str参照範囲
commentstrコメント
destinations 名前定義情報ジェネレータ
(シート名, セルアドレス) の tuple
encoding例:'utf-8'
epoch
excel_base_date datetime 起算日
Excel オプションの [1904 年から計算する] に対応
例:datetime(1904, 1, 1, 0, 0)・datetime(1899, 12, 30, 0, 0)
is_templatebool
iso_datesbool
loaded_theme
mime_type
named_styles list[ str ]セルスタイル名 リスト (使用中のみ)
path
propertiesDocumentProperties('/xl/workbook.xml')
read_only bool 読み取り専用モード指定
(True:読み取り専用モード / False:通常モード)
参照:load_workbook()【ワークブック読み込み】
relsRelationshipList
security (下記プロパティは抜粋)WorkbookProtection
(別名:DocumentSecurity)
ブック保護
security.lockStructurebool ブック保護 (シート構成) の有無
lockWindowsbool ブック保護 (ウィンドウ) の有無
lock_structureboollockStructure【ブック保護 (シート構成) の有無】のエイリアス
lock_windowsboollockWindows【ブック保護 (ウィンドウ) の有無】のエイリアス
workbookPasswordstr ブック保護のパスワード
workbook_passwordworkbookPassword【ブック保護パスワード】のエイリアス
shared_stringsIndexedList
sheetnames list[ str ] シート名リスト
wb.sheetnames[ N (0~) ] で N 番目のワークシートのシート名
style_names list[ str ]セルスタイル名 リスト (使用中のみ)
template bool テンプレート指定の有無
(True:テンプレート / False:通常ワークブック)
参照:save【ワークブック保存】
vba_archive
viewslist[ BookView ]
worksheets list[ Worksheet【ワークシート】 ] Worksheet【ワークシート】のリスト
wb.worksheets[ N (0~) ] で N 番目のワークシート
write_only bool 書き込み専用モード指定
(True:書き込み専用モード / False:通常モード)
参照:Workbook【ワークブック】コンストラクタ

メソッド

メソッド備考
add_named_range(
    named_range)
名前定義 追加
named_range (DefinedName)名前定義
(代替:workbook.defined_names.append【名前定義 追加】)
add_named_style(
    style)
名前付きセルスタイル 登録
style (NamedStyle)名前付きセルスタイル
close( ) ワークブック クローズ
(読み取り専用モード・書き込み専用モードは明示的にクローズ)
参照:load_workbook()【ワークブック読み込み】
copy_worksheet(
    from_worksheet)
ワークシート コピー
戻り値コピー先のworksheet【ワークシート】
from_worksheetコピー元のworksheet【ワークシート】
・同一ワークブック内のみ
・シート内の画像等はコピー不可
・読み取り・書き込み専用モードではコピー不可
create_chartsheet(
    title=None,
    index=None)
グラフシート作成
title (str)タイトル
index (int)挿入位置インデックス
create_named_range(
    name,
    worksheet=None,
    value=None,
    scope=None)
名前定義 作成・追加
name (str)定義名
worksheet (Worksheet)ワークシート
value (str)参照範囲
scope (int)範囲 (ブック:None / シート:シートId)
※ 下記どちらかの指定 (workbook.defined_name【名前定義】モジュール も参照)
worksheet (ワークシート)指定有り:value (参照範囲)にシート名なしで指定
 (スペースを含むシート名に対応、但しカンマ区切りによる複数指定には未対応)
worksheet (ワークシート)指定なし:value (参照範囲)にシート名有りで指定
create_sheet(
    title=None,
    index=None)
ワークシート作成
戻り値 (Worksheet)Worksheet【ワークシート】
戻り値 (WriteOnlyWorksheet)WriteOnlyWorksheet【ワークシート (書き込み専用)】
title (str)シート名 (省略:'Sheet'・'SheetN')
index (int)挿入位置インデックス
      省略:最後
      0:先頭
      N:先頭から(N+1)番目
      -1:最後から2番目
      -N:最後から(N+1)番目
get_index(
    worksheet)
インデックス番号取得
戻り値インデックス番号 (0~)
worksheetworksheet【ワークシート】
(代替:Workbook.index【インデックス番号取得】)
get_named_range(
    name)
名前定義 取得 (範囲:ブックのみ)
戻り値 (DefinedName)名前定義
name定義名
(代替:Workbook.defined_names[name])
get_named_ranges( ) 名前定義シーケンス取得
戻り値DefinedName【名前定義】シーケンス
(代替:workbook.defined_names.definedName【名前定義シーケンス】)
get_sheet_by_name(
    name)
シート名からシート取得
戻り値シート
nameシート名
(代替:wb[ sheetname ])
get_sheet_names( ) シート名リスト取得
戻り値シート名のリスト
(代替:sheetnames【シート名リスト】)
index(worksheet) インデックス番号取得
戻り値インデックス番号 (0~)
worksheet (Worksheet)ワークシート
move_sheet(
    sheet,
    offset=0)
ワークシート移動
sheet (Worksheet | str)ワークシート または シート名
offset現在位置からの移動数
      省略 (0):移動なし
      正数:右に移動
      負数:左に移動
remove(worksheet) ワークシート削除
worksheet (Worksheet)ワークシート
remove_named_range(
    named_range)
名前定義 削除 (範囲:ブックのみ)
named_range定義名
(代替: del Workbook.defined_names[name]【削除操作 (範囲:ブックのみ)】delete【名前定義 削除】)
remove_sheet(
    worksheet)
ワークシート削除
worksheet (Worksheet)ワークシート
(代替:del workbook[ sheetname ]【ワークシート削除 操作】remove【ワークシート削除】)
save(filename) ワークブック保存 (新規保存・上書き保存・テンプレート保存)
filenameファイル名
既存ファイルあり:警告なしに保存
テンプレート保存:template【テンプレート指定の有無】を True に指定

※ 形式:ECMA 376ISO 29500 で標準化されている zip形式の OOXML(Office Open XML) ファイル

基本操作

from openpyxl import Workbook

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

# 値設定
print(ws.title)
# 出力:Sheet
ws['B2'] = 'Workbook()'

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

from openpyxl.reader.excel import load_workbook

# ワークブック読み込み
WORKBOOK = 'sample.xlsx'
wb = load_workbook(WORKBOOK)
ws = wb.active

# 値取得
cell = ws['B2']
print(cell.value)
# 出力:Workbook()
ws['B3'] = 'load_workbook()'

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

ワークブックの基本操作のサンプル画像


ワークシートの参照

from openpyxl import Workbook

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active
ws.title = 'SheetX'
wb.create_sheet('SheetY')
wb.create_sheet('SheetZ')
print(wb.worksheets)
# 出力:[<Worksheet "SheetX">, <Worksheet "SheetY">, <Worksheet "SheetZ">]

# ワークシート参照 (アクティブシート)
ws = wb.active
print(ws)
# 出力:<Worksheet "SheetX">
ws['B2'] = ws.title

# ワークシート参照 (シート名)
ws = wb['SheetY']
print(ws)
# 出力:<Worksheet "SheetY">
ws_ = wb.get_sheet_by_name('SheetY')  # [非推奨]
print(ws_)
# 出力:<Worksheet "SheetY">
ws['B2'] = ws.title

# ワークシート参照 (インデックス番号)
ws = wb.worksheets[2]
print(ws)
# 出力:<Worksheet "SheetZ">
ws['B2'] = ws.title

# アクティブシート変更
wb.active = ws
wb.active['B4'] = 'active'

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

ワークシート参照[X]のサンプル画像 ワークシート参照[Y]のサンプル画像 ワークシート参照[Z]のサンプル画像


ワークシートの新規作成・コピー・移動・削除

from openpyxl import Workbook

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
print(wb.sheetnames)
# 出力:['Sheet']

# ワークシート新規作成
wb.create_sheet('SheetA', 0)
sheet_x = wb.create_sheet('SheetX')
wb.create_sheet('SheetY')
wb.create_sheet('SheetZ')
print(wb.sheetnames)
# 出力:['SheetA', 'Sheet', 'SheetX', 'SheetY', 'SheetZ']

# ワークシート コピー
wb.copy_worksheet(sheet_x)
print(wb.sheetnames)
# 出力:['SheetA', 'Sheet', 'SheetX', 'SheetY', 'SheetZ', 'SheetX Copy']

# ワークシート移動
wb.move_sheet(sheet_x, -1)
print(wb.sheetnames)
# 出力:['SheetA', 'SheetX', 'Sheet', 'SheetY', 'SheetZ', 'SheetX Copy']
wb.move_sheet('SheetA', 1)
print(wb.sheetnames)
# 出力:['SheetX', 'SheetA', 'Sheet', 'SheetY', 'SheetZ', 'SheetX Copy']

# ワークシート削除
del wb['Sheet']
print(wb.sheetnames)
# 出力:['SheetX', 'SheetA', 'SheetY', 'SheetZ', 'SheetX Copy']
wb.remove(sheet_x)
print(wb.sheetnames)
# 出力:['SheetA', 'SheetY', 'SheetZ', 'SheetX Copy']
wb.remove_sheet(wb['SheetY'])  # [非推奨]
print(wb.sheetnames)
# 出力:['SheetA', 'SheetZ', 'SheetX Copy']

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

ワークシートの反復処理

from openpyxl import Workbook

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

# ワークブック反復処理
for sheet in wb:
    print(sheet)
# 出力:
# <Worksheet "SheetX">
# <Worksheet "SheetY">
# <Worksheet "SheetZ">

# シート名リスト
print(wb.sheetnames)
# 出力:
# ['SheetX', 'SheetY', 'SheetZ']
for name in wb.sheetnames:
    print(name)
# 出力:
# SheetX
# SheetY
# SheetZ

# シート名リスト取得 [非推奨]
print(wb.get_sheet_names())
# 出力:
# ['SheetX', 'SheetY', 'SheetZ']
for name in wb.get_sheet_names():
    print(name)
# 出力:
# SheetX
# SheetY
# SheetZ

# ワークシート リスト
print(wb.worksheets)
# 出力:
# [<Worksheet "SheetX">, <Worksheet "SheetY">, <Worksheet "SheetZ">]
for sheet in wb.worksheets:
    print(sheet)
# 出力:
# <Worksheet "SheetX">
# <Worksheet "SheetY">
# <Worksheet "SheetZ">

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

ワークシート・シート名 ⇔ インデックス番号 変換

from openpyxl import Workbook

# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws_x = wb.active
ws_x.title = 'SheetX'
ws_y = wb.create_sheet('SheetY')
ws_z = wb.create_sheet('SheetZ')

# ワークシート・シート名 ⇒ インデックス番号
# インデックス番号取得
print(wb.index(ws_x), wb.index(ws_y), wb.index(ws_z))
# 出力:0 1 2

# インデックス番号取得 [非推奨]
print(wb.get_index(ws_x), wb.get_index(ws_y), wb.get_index(ws_z))
# 出力:0 1 2

# インデックス番号 ⇒ ワークシート・シート名
# ワークシート リスト
for idx in range(len(wb.worksheets)):
    print(wb.worksheets[idx])
# 出力:
# <Worksheet "SheetX">
# <Worksheet "SheetY">
# <Worksheet "SheetZ">

# シート名リスト
for idx in range(len(wb.sheetnames)):
    print(wb.sheetnames[idx])
# 出力:
# SheetX
# SheetY
# SheetZ

# ワークシート ⇒ シート名
# Worksheet【ワークシート】の title【シート名】
print(ws_x.title)
# 出力:SheetX
print(ws_y.title)
# 出力:SheetY
print(ws_z.title)
# 出力:SheetZ

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