Skip to content

sheet の操作#

from openpyxl import load_workbook
from openpyxl import Workbook

# ファイルの保存
def save_wb(wb, filename):
    wb.save(filename)

# ファイルの読込み
def open_wb(filename):
    return load_workbook(filename)

# 複数シートの作成
def create_sheets(wb, sheetName_list):
    for sheet_name in sheetName_list:
        wb.create_sheet(sheet_name)

# シートの削除
def delete_sheet_by_name(wb, sheet_name):
    wb.remove(wb[sheet_name])

# シートのコピー
def copy_sheet(wb, src_sheet, sheet_name="default name"):
    source = wb[src_sheet]
    new_sheet = wb.copy_worksheet(source)
    new_sheet.title = sheet_name

# シートのタイトル取得
def get_sheetTitle(wb):
    sheetTitle_dict = {}
    for index, sheet in enumerate(wb):
        sheetTitle_dict[index] = sheet.title
    return sheetTitle_dict

# インデックスを指定してシートにアクセス
def aceees_sheetIndex(wb, index):
    try:
        return wb.worksheets[index]
    except IndexError:
        print(f"{index} は index 範囲外です。")


if __name__ == "__main__":
    wb = Workbook()
    create_sheets(wb, ["First", "Second", "Third"])
    delete_sheet_by_name(wb, "Third")
    copy_sheet(wb, "First", "After copy")

    print(aceees_sheetIndex(wb, 3).title)
    print("-"*60)
    print(get_sheetTitle(wb))

    wb.save("opration_sheet.xlsx")

その他シートの操作#

シートの取得#

  • ワークシートに名前を付けると、ワークブックのキーとして取得できます。

    ws3 = wb["New Title"]
    

  • インデックス指定でもシートへアクセス可能です。

    ws1 = wb.worksheets[0]
    

新しいシートを作成#

wb = Workbook()
ws = wb.create_sheet("add Sheet")
  • シートは、作成時に自動的に名前が付けられ、順番に番号が付けられる(Sheet、Sheet1、Sheet2、…)。
  • この名前は、次の Worksheet.title プロパティを使用していつでも変更可能。
ws.title = "New Title"

シートの削除#

  • シートの削除は.removeメソッド

wb.remove(wb["Sheet"])

シート名を取得する#

  • Workbook.sheetname 属性を持つワークブックのすべてのワークシートの名前を確認できる。
wb.sheetnames
  • ワークシート名をループで取得する
for sheet in wb:
    print(sheet.title)
  • すべてのワークシート名を取得する
import openpyxl
# 既にsample.xlsx が作成されている前提
wb = openpyxl.load_workbook('sample.xlsx') 
wb.get_sheet_names() 
['Sheet1', 'Sheet2', 'Sheet3']

シートのコピー#

  • 1つのワークブック内にワークシートのコピーを作成できます。
src = wb.active
dst = wb.copy_worksheet(src)

Warning

セル(値、スタイル、ハイパーリンク、コメントを含む)と特定のワークシート属性(寸法、形式、プロパティを含む) のみがコピーされます。
他のすべてのワークブック/ワークシート属性はコピーされません(例:画像、チャート。)
また、ワークブック間でワークシートをコピーすることもできません。ブックが読み取り専用 モードまたは 書き込み専用モードで開いている場合、ワークシートをコピーすることはできません。

シートタブの色を変更する#

  • シートタブの背景色は、デフォルトで白。
  • 属性に RRGGBB カラーコードを指定し、 Worksheet.sheet_properties.tabColor 属性にてこれを変更できます。
ws.sheet_properties.tabColor = "1072BA"