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ファイルが生成される。

  • 生成された「サンプルファイル.xlsx」の閲覧例

    生成された「サンプルファイル.xlsx」の閲覧例

シンプルな手順で対象のセルにデータを書き込むことができたことがわかる。