Excelを扱うことができるPythonライブラリであるopenpyxlでExcelファイルのワークシートをコピーする方法を備忘録として残しておきます。
目次
サンプルのExcelファイル
使い方をまとめる上で、以下の「sample.xlsx」という名称のExcelファイルをCドライブ直下に格納したことを想定します。
また、「sample.xlsx」には「購入リスト」と「お店一覧」という名称のシートが2つあることを想定します。
シートをコピーする
【サンプルコード】
##### 【シートをコピーする】 #####
import openpyxl
# Excelファイルのロード
excel_path='C:/sample.xlsm'
workbook = openpyxl.load_workbook(filename=excel_path)
# シート名一覧を表示(シートコピー前)
print(f'シート名一覧(コピー前): {workbook.sheetnames}')
# '購入リスト'という名称のシートをコピー
worksheet = workbook.copy_worksheet(workbook['購入リスト'])
# コピーしたシートの名称を変更する
worksheet.title = '購入リスト バックアップ'
# シート名一覧を表示(シートコピー後)
print(f'シート名一覧(コピー後): {workbook.sheetnames}')
# Excelファイルを保存
workbook.save(excel_path)
# ロードしたExcelファイルを閉じる
workbook.close()
【実行結果】
シート名一覧(コピー前): ['購入リスト', 'お店一覧']
シート名一覧(コピー後): ['購入リスト', 'お店一覧', '購入リスト バックアップ']
【説明】
- Workbookオブジェクトのcopy_worksheet ()でシートをコピーすることができます。copy_worksheet(from_worksheet)のようにコピー元のWorksheetオブジェクトを指定する必要があります。
- Worksheetオブジェクトは、workbook['シート名']か Workbook .get_sheet_by_name('シート名')で取得することができます。
- copy_worksheet()自体にはコピーしたシートの名称を指定できないため、Worksheetオブジェクトのtitleでシート名を書き換えます。
※copy_worksheet()したら、アクティブシートがコピーしたシートになるようです。 - Workbook.save()をしないと、追加シートの情報が保存されないので注意です。
- Workbookオブジェクトは「openpyxl.workbook.workbookモジュール」内のWorkbookクラスで定義されています。
- Worksheetオブジェクトは「openpyxl.worksheet.worksheetモジュール」内のWorksheetクラスで定義されています。
「sample.xlsx」を開くと、「購入リスト」と同じ内容の「購入リスト バックアップ」が追加されていることが確認できます。
【注意】
- openpyxlでは既存のExcelファイルから画像やグラフがコピーできないようです。
以下のブログでまとめました。
関連情報
【openpxxlライブラリのまとめ】
【Pythonライブラリのまとめ】
参考
以上!
コメント