ホンモノのエンジニアになりたい

ITやビジネス、テクノロジーの話を中心とした雑記ブログです。

[Python] openpyxlでのシートコピー

先日に引き続きopenpyxlで遊んでいた時に調べた内容のメモです。

・シートコピー
・ソースコード


公式ドキュメントはこちら
openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 2.6.2 documentation

シートコピー

シートコピーは基本的にこれだけ。

workbook.copy_worksheet(worksheet)


こんな感じで使った。

from openpyxl import load_workbook

#対象のエクセルファイル指定
xls_file='test.xls'

#openpyxlでエクセルファイル(ブック)とアクティブシートを読込
wb=load_workbook(xls_file)
ws=wb.active

#アクティブシートをコピー
ws_copy=wb.copy_worksheet(ws)

#コピーされたシートのタイトルを変更する
ws_copy.title='新シート名'

#リストで量産するなら
list=['シート1','シート2','シート3','シート4']
for sheet_name in list:
    ws_copy = wb.copy_worksheet(ws)
    ws_copy.title=sheet_name

#保存して終わり
wb.save(xls_file)

上記コードではシートタイトル(エクセル上のシート名)を変更していますが、特に変更しなければ「コピー元シート名△Copy」というシート名になります。(△は半角スペース)

コピーで新しく生成されるシート名が既に存在している状況であれば、末尾に「1」から始まる連番が付与されるようです。

 コピー元シート名:sheet
 1回シートコピー:sheet Copy
 2回シートコピー:sheet Copy1

私は書式諸々を設定したテンプレシートを作っておいて、スクリプトが動くたびにテンプレからコピーしたシートで作業してました。

ソースコード

ちょっと遊んでおもちゃを作った後に知りましたが、bitbucketにソースコードがありました。 出来ること出来ないことをちゃんと調べようと思ったら、ソースコードを真面目に読まんといかんね。

bitbucket.org

おわり。