こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonで面倒なExcelレポートの作成を自動化したい!
- 時間指定により定期的にExcelレポートが自動作成できるようにしたい!
【概要】Excelレポート作成を定期実行
本記事ではPythonを用いて定期的にExcelレポートを作成する方法について解説します。
なお、「スケジュール」および「Excel操作」のPythonライブラリを用いて実現します。それぞれの具体的な使い方については別途記事を配信していますため、そちらをご覧下さい。
スケジュール
【Python】Scheduleモジュールを用いたイベント定期実行|指定時間動作のスケジュール関数作成例と使い方解説
Pythonスクリプトを一度きりではなく、定期的に実行できるようにしたい。加えて、定期的な実行条件は細かく定義したい。本記事ではこのような要望に回答。具体的に「スケジュール(Schedule)モジュールを活用した定期実行処理の組み立て方法」について詳しく解説。
Excel操作
【Excel×Python操作】エクセル作業で自動化できること徹底解説・業務効率化入門
「Excel作業を自動化したいが、Excelのどんな操作をPythonで自動化できるのか分からない」本記事ではこの疑問に答えます。まず、Pythonでの操作可能範囲を示した後、具体的なExcel作業効率化事例を紹介。
【参考】業務効率化を検討する上でおすすめの教材
Pythonを用いて業務効率化を実践したい方向けにおすすめの教材を紹介します。こちらにPythonを用いてExcel操作を行うの具体的な方法も言及されています。
【Python実践】決まった時間にExcelレポートを作成する方法
それでは実際にPythonで定期的にExcelレポートを作成する方法について解説します。
【事前準備】サンプルデータとフォルダ構成
レポーティング用のサンプルデータとしてExcel_Sample_Dataを用います。
事前にダウンロードしておきましょう。
加えて、サンプルデータと実際に記述するPythonスクリプトは同じディレクトリに配置しましょう。
- data.xlsx(サンプルデータ)
- python.py(Pythonスクリプトファイル)
【事前準備】Pythonライブラリのインストール
Schedule関数を起動させるには以下のPythonライブラリが必要です。事前にインストールしておきましょう。
定期実行用モジュール
pip install schedule
Excel操作用モジュール
pip install openpyxl
Python|Excel関数
Excelレポートを作成するためのスクリプトを以下に示します。今回は参照したデータをグラフ化するスクリプトを例として記載します。
#モジュール読込
import openpyxl
import pandas as pd
from openpyxl.chart import Reference
from openpyxl.chart.axis import DateAxis
from openpyxl.chart.layout import Layout, ManualLayout
def create_excel_report():
"""
*******************************
データ読込
*******************************
"""
# 読込ファイル名
input_filename = "data.xlsx"
df = pd.read_excel(input_filename)
"""
*******************************
Excelファイル作成
*******************************
"""
# 出力ファイル名
output_filename = "Excel_Report.xlsx"
# Excelワークブック・シート作成
workbook = openpyxl.Workbook(output_filename)
sheet = workbook.create_sheet(index=0)
# 保存
workbook.save(output_filename)
"""
*******************************
グラフ作成
*******************************
"""
# Excelワークブック・シート読込
workbook = openpyxl.load_workbook(output_filename)
sheet = workbook.active
# データ書き込み
sheet["A1"] = "株価比較"
sheet["A2"] = "日付"
sheet["B2"] = "A社株価"
sheet["C2"] = "B社株価"
# データ出力
for i in range(len(df)):
sheet["A"+str(3+i)] = df.iloc[i,0]
sheet["B"+str(3+i)] = df.iloc[i,1]
sheet["C"+str(3+i)] = df.iloc[i,2]
"""
*******************************
01 グラフオブジェクト
*******************************
"""
graph_obj = openpyxl.chart.LineChart() #グラフの種類
graph_obj.title = "株価" #グラフのタイトル
graph_obj.style = 15 #グラフのフォントサイズ
graph_obj.height = 10 #高さ
graph_obj.width = 20 #幅
#Y軸設定
graph_obj.y_axis.title = "株価"
graph_obj.y_axis.crossAx = 500
#X軸設定
graph_obj.x_axis = DateAxis(crossAx=100)
graph_obj.x_axis.number_format = 'd-mmm'
graph_obj.x_axis.majorTimeUnit = "days"
graph_obj.x_axis.title = "日付"
"""
*******************************
02 データの範囲設定
*******************************
"""
#Y軸範囲
Y_axis = Reference(sheet, min_col=2, min_row=2, max_col=3, max_row=len(df)+2)
graph_obj.add_data(Y_axis, titles_from_data=True)
#X軸範囲
X_axis = Reference(sheet, min_col=1, min_row=4, max_col=1, max_row=len(df)+2)
graph_obj.set_categories(X_axis)
"""
*******************************
03 グラフのスタイル詳細設定
*******************************
"""
style = graph_obj.series[0]
style.smooth = True
style2 = graph_obj.series[1]
style2.smooth = True
# 配置場所
sheet.add_chart(graph_obj, "E3")
#保存
workbook.save(output_filename)
PythonでExcelのグラフを作成する具体的な解説はこちらの記事で行っています。
【Python×Excel】グラフの作成方法
OpenPyXLによるExcel操作を取り扱ったPythonプログラミング記事です。本記事では、「グラフの作成方法」ついて解説。また、グラフ作成はもちろん、グラフの詳細設定(グラフの種類・軸ラベル・スタイル設定等)も柔軟にプログラミングできるよう解説。
Python|スケジュール関数
前述で作成したExcel関数を定期的に実行するスケジュール関数を作成します。
以下の例は、毎日10:00にExcelレポートが作成される仕様として記載しています。
# ライブラリをインポート
import schedule
from time import sleep
# スケジュール登録
schedule.every().days.at("10:00").do(create_excel_report)
# イベント実行
while True:
schedule.run_pending()
sleep(1)
【参考】Pythonで面倒な作業を自動化!手法一挙公開中!
当サイトでは日々面倒な作業をPythonで自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。
【面倒なタスクをPythonで解決!】作業効率化の人気記事一覧
【参考】Pythonとは?・実現できること
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら