Microsoft Excelで作成された請求書、領収書、納品書といった定形書類を編集して使うといった仕事を行う場合、OpenPyXLを使うと簡単に自動化が行える。この方法は簡単かつ効果が期待できるので、ぜひ試してもらえればと思う。
連載「PythonでExcel作業の効率化を図ろう」のこれまでの回はこちらを参照。
Excelの書き換えにはOpenPyXLが便利
これまでの回で、Microsoft Excelファイルを編集する場合、Pandasがデータの扱いに優れており、OpenPyXLがExcelファイルの装飾データをそのままに一部のデータの書き換えることに便利であることを説明した。
定例的に発生する書類の作成と送付という作業は、決まった書類テンプレートにデータをはめ込むことが多い。こうした操作ではPandasを使うまでもなく、OpenPyXLだけで処理を行える。請求書の作成といった作業であればOpenPyXLで十分だ。そこで今回は、OpenPyXLで請求書ファイルを編集する方法を取り上げる。
請求書ファイルの一部を編集する
前回に作成した請求書ファイルの「会社名」の項目を書き換えるPythonコードを作る。このコードでOpenPyXLを使った基本的な編集方法がわかる(これまでの回は「こちら」から)。
作成したコードは次のとおり。
openpyxl_read_write_1.py
import openpyxl
#=========================================================================
# 読み込み、および、書き込みに使うファイル名やシート名
#=========================================================================
input_xlsx_file_path = '税の計算を含むサービス請求書.xlsx'
output_xlsx_file_path = 'サンプルファイル.xlsx'
sheet_name = 'サービス請求書'
#=========================================================================
# Microsoft Excelファイルの読み込む
#=========================================================================
workbook = openpyxl.load_workbook(input_xlsx_file_path)
sheet = workbook[sheet_name]
#=========================================================================
# データの書き換え
#=========================================================================
sheet['B1'] = 'マイナビ・システムズ'
#=========================================================================
# Microsoft Excelファイルに出力
#=========================================================================
workbook.save(output_xlsx_file_path)
#=========================================================================
# ファイルに保存したことを表示
#=========================================================================
print(f'「{output_xlsx_file_path}」に保存しました。'
「workbook = openpyxl.load_workbook(input_xlsx_file_path)」の処理でExcelファイルからワークブックを取り出し、ここからさらに「sheet = workbook[sheet_name]」でシートを取り出している。
そして、取り出したシートに対して「sheet['B1'] = 'マイナビ・システムズ'」でセルB1に「マイナビ・システムズ」というデータを書き込んでいる。あとは「workbook.save(output_xlsx_file_path)」でファイルに保存して処理は完了だ。
openpyxl_read_write_1.pyを実行すると次のようなExcelファイルが生成される。
シンプルな手順で対象のセルにデータを書き込むことができたことがわかる。