openpyxlでLibreOffice Calcのシートをコピーする
openpyxlを使うと、簡単にシートをコピーでき、同時に名前のつけることが出来る
LibreOffice Calcでシートをコピーをする度に、毎回手作業で行うのは面倒です。
これが、コピーしたシートの名前の変更をするのを、手作業で行うのは、もっと面倒です。
それをopenpyxlを使うと、簡単にシートをコピーすることが出来ます。
コピーしたシートの名前の変更することも簡単に行うことが出来ます。
今回のブログ記事では、openpyxlでLibreOffice Calcのシートをコピーし、シート名を変更する方法をご紹介します。
なお、今回の使用するPythonのファイルですが、copy_sheets.pyにしました。
※この記事ではLinux(Xbunstu)で行いましたが、Windows、Macでも同じ作業でopenpyxlでLibreOffice Calcのファイルを作ることが出来ます。
openpyxlでLibreOffice Calcのシートをコピーする方法
1.VS Codeでopenpyxlを扱えるようにする
VS Codeでopenpyxlを扱えるようにします。
以下のコードを入力します。
import openpyxl
これは、openpyxlをインポート(取り込む)という意味のコードです。
プログラミングに詳しくない方には意味が分からないと思いますので、これは、VS Codeでopenpyxlを扱えるようにするという意味に捉えてください。
あと、今回は日報のファイルで、シートをコピーして、シート名を日付にしたいので、日付を表示させるコードを入力します。
以下のコードを入力します。
from datetime import date
2. シートをコピーしたいLibreOffice Calcのファイルを読み込む
シートをコピーしたいLibreOffice Calcのファイルを読み込みます。
以下のコードを入力します。
wb = openpyxl.load_workbook( "シートをコピーしたいLibreOffice Calcのファイル" )
ここで注意してほしいのは、読み込むLibreOffice Calcのファイル形式はxlsx形式のものでなければならないということです。
通常のLibreOffice Calcのファイル形式はxlsx形式はodf形式なのですが、この形式だと読み込めません。
LibreOffice Calcのファイルをopenpyxlで扱う場合は、保存する際に、ファイル形式をExcel 2007-365(.xlsx)を選んでxlsx形式にして下さい。
今回は例として日報のファイルであるdaily_report.xlsxを読み込みたいと思います。
コードは以下のようになります。
wb = openpyxl.load_workbook( "daily_report.xlsx" )
3. VS Codeにシート名のリストを表示させる
一応、読み込んだLibreOffice CalcのファイルのシートがVS Codeで分かるようにします。
以下のコードを読み込みます。
print( wb.sheetnames )
これでVS Codeで読み込んだLibreOffice CalcのファイルのシートがVS Codeで分かるようになります。
4.コピーするシートを取得する
どのシートをコピーするかを取得します。
コードは以下の通りです。
ws_template = wb['シート名']
今回は作業日報というシートをコピーしたいので、以下のようなコードを入力します。
ws_template = wb['作業日報']
5. シートをコピーする
シートをコピーするコードを入力します。
以下のコードを入力します。
ws_copy = wb.copy_worksheet(ws_template)
4で、ws_template は、作業日報としているので、このコードのままで大丈夫です。
6. コピーしたシート名を変更する
コピーしたシートの名前を変更します。
今回は、シートを当日の日付にしたいので、最初に設定します。
以下のコードを入力します。
today = date.today()
コピーしたシート名を変更するコードを入力します。
以下のコードを入力します。
ws_copy.title='シート名'
今回はシート名を当日の日付にしたいので、以下のようなコードを入力します。
ws_copy.title = f'{today:%Y年%m月%d日}'
7. 追加したシート名を確認する
一応、実際にシートがコピーされ、シート名が変更されたのかをVS Codeで分かるようにします。
以下のコードを入力します。
print( wb.sheetnames )
8. ファイルを上書き保存する
最後にファイルを上書き保存します。
以下のコードを入力します。
wb.save( "シートをコピーし、シート名を変更したLibreOffice Calcのファイル"" )
今回はdaily_report.xlsxというファイルを使用しましので、以下のようにコードを入力します。
wb.save("daily_report.xlsx")
以下は今まで書いたコードをまとめたものです。
import openpyxl
from datetime import date
#シートを新規に追加したいLibreOffice Calcのファイルを読み込む
wb = openpyxl.load_workbook( "daily_report.xlsx" )
#シート名のリストを表示
print( wb.sheetnames )
#コピー元のシートを習得する
ws_template = wb['作業日報']
#シートを複製する
ws_copy = wb.copy_worksheet(ws_template)
# 当日の日付を取得
today = date.today()
#コピーしたシート名を変更する(今回は日報なので日付にする)
ws_copy.title = f'{today:%Y年%m月%d日}'
#シート名の確認
print( wb.sheetnames )
#ワークブックを上書き保存
wb.save("daily_report.xlsx")
VS Codeの右上の▷ボタンをクリックします。
daily_report.xlsxを開くと、作業日報のシートがコピーされ、シート名が変更されています。