Pythonでシートをコピーする(openpyxl)

ノウハウ
スポンサーリンク

 

  

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」を開くと、「購入リスト」と同じ内容の「購入リスト バックアップ」が追加されていることが確認できます。

 

【注意】

 

 

 

 

 

関連情報

【openpxxlライブラリのまとめ】

 

【Pythonライブラリのまとめ】

 

 

参考

 

 

 

以上!

コメント

タイトルとURLをコピーしました