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")
その他シートの操作#
シートの取得#
-
ワークシートに名前を付けると、ワークブックのキーとして取得できます。
-
インデックス指定でもシートへアクセス可能です。
新しいシートを作成#
- シートは、作成時に自動的に名前が付けられ、順番に番号が付けられる(Sheet、Sheet1、Sheet2、…)。
- この名前は、次の Worksheet.title プロパティを使用していつでも変更可能。
シートの削除#
- シートの削除は
.remove
メソッド
wb.remove(wb["Sheet"])
シート名を取得する#
Workbook.sheetname
属性を持つワークブックのすべてのワークシートの名前を確認できる。
- ワークシート名をループで取得する
- すべてのワークシート名を取得する
import openpyxl
# 既にsample.xlsx が作成されている前提
wb = openpyxl.load_workbook('sample.xlsx')
wb.get_sheet_names()
['Sheet1', 'Sheet2', 'Sheet3']
シートのコピー#
- 1つのワークブック内にワークシートのコピーを作成できます。
Warning
セル(値、スタイル、ハイパーリンク、コメントを含む)と特定のワークシート属性(寸法、形式、プロパティを含む)
のみがコピーされます。
他のすべてのワークブック/ワークシート属性はコピーされません(例:画像、チャート。)
また、ワークブック間でワークシートをコピーすることもできません。ブックが読み取り専用 モードまたは
書き込み専用モードで開いている場合、ワークシートをコピーすることはできません。
シートタブの色を変更する#
- シートタブの背景色は、デフォルトで白。
- 属性に
RRGGBB
カラーコードを指定し、 Worksheet.sheet_properties.tabColor 属性にてこれを変更できます。