請求書の自動作成を汎用的に行えるようにするには、請求先の住所は別の帳簿で管理しておき、請求書を作るときにそこからデータを持ってきて差し込むといった動きが必要になる。今回は、PythonのライブラリであるPandasを使って請求先会社データをまとめたExcelデータから請求先データを抽出する方法を説明する。

連載「PythonでExcel作業の効率化を図ろう」のこれまでの回はこちらを参照

請求先データをMicrosoft Excelで管理

請求書を自動生成する場合、次のように、請求書のデータに最初から自社の情報を書いておくことになる。

以下の画面の場合、選択肢したセルの部分には請求先の会社情報が書き込まれる。この部分をPythonを使って自動的に書き込むようにすることが次のステップだ。

  • 請求書データファイル

    請求書データファイル

請求先の会社情報は次のように別のMicrosoft Excelファイルで管理しておくことを想定する。このファイルは「請求先データ.xlsx」というファイルに保存してあるものとする。

  • 請求先会社情報を管理しているMicrosoft Excelファイル: 請求先データ.xlsx

    請求先会社情報を管理しているMicrosoft Excelファイル: 請求先データ.xlsx

1行目はヘッダ(データの項目名)で、2列目以降がデータだ。1列目が会社名になっているので、例えば会社名とこのファイルを指定することで、最初に示した請求書データに自動的に請求先データが書き込まれることになる。

会社データを取り出すPythonスクリプト

今回は、Microsoft Excelファイルから指定した会社の請求先データを取り出すPythonスクリプトを作成する。データの取り出しや検索にはPythonのライブラリ「Pandas」を使う。Pandasはデータ処理が得意であり、使いやすい。

最初に成果物を掲載しておく。

read_company_data_1.py

import pandas

#=========================================================================
# 初期値を設定
#=========================================================================
billing_company_data_xlsx_file_path = '請求先データ.xlsx'
billing_company_name = 'マイナビシステムズD'

#=========================================================================
# 請求先会社データファイルの読み込み
#=========================================================================
dataframe = pandas.read_excel(billing_company_data_xlsx_file_path)

#=========================================================================
# 指定された会社のデータを取得
#=========================================================================
billing_company = dataframe[dataframe[dataframe.columns[0]] == billing_company_name]

#=========================================================================
# 指定された会社のデータをまとめて出力
#=========================================================================
print(billing_company)

#=========================================================================
# 指定された会社のデータを項目ごとに出力
#=========================================================================
print(billing_company['会社名'])
print(billing_company['郵便番号'])
print(billing_company['住所'])
print(billing_company['電話番号'])
print(billing_company['請求先名']

上記のスクリプトは「請求先データ.xlsx」というファイルから、会社名が「マイナビシステムズD」という会社の請求先データを探し出して出力するといった内容になっている。Pandasを使ってMicrosoft Excelファイルからデータを読み込みデータフレークに保持するまではこれまでに取り上げてきたとおりだ。

会社名に一致する行を取り出している処理が「billing_company = dataframe[dataframe[dataframe.columns[0]] == billing_company_name]」の部分だ。この書き方で会社名(1列目)が指定された会社名と同じ行を取り出している。

「print(billing_company)」で取り出したデータをまとめて出力し、「print(billing_company['会社名'])」や「print(billing_company['住所'])」でそれぞれの項目を個別に出力している。

このスクリプトを実行すると次のようになる。

  • read_company_data_1.pyを編集中

    read_company_data_1.pyを編集中

  • read_company_data_1.pyの実行結果

    read_company_data_1.pyの実行結果

「マイナビシステムズD」という会社のデータを取り出せていることを確認できる。