こんにちは、三橋です。
前回の記事でPythonでグラフを作成するExcelマクロを実行しましたが、今回は実行していたグラフを作成するExcelマクロをPythonで実行してみたいと思います。
https://www.wantedly.com/companies/qualias/post_articles/497003
PythonでExcel上のデータを元にグラフを作成する
前回はxlwingsを使用しましたが、今回はマクロを使用しないのでopenpyxl
を使用し、実行してみたいと思います。openpyxl
とはPythonでExcelを操作することが可能なライブラリです。
大まかなxlwingsとの違いはxlwingsはExcelを必要としますが、
openpyxlはExcelがインストールされていなくても動作します。
また、処理速度もopenpyxlの方が8倍ほど早いと言われています。
まずopenpyxl
をインポートし使用できるようにします。そしてPythonのプログラムと同じフォルダに「test2.xlsx」というExcelがあるとします。Pythonのプログラムは以下のようになります。
import openpyxl
from openpyxl.chart import Reference
from openpyxl.chart.axis import DateAxis
wb = openpyxl.load_workbook('./test2.xlsx')
sheet = wb['test']
graph_obj = openpyxl.chart.BarChart()
graph_obj.title = "売上"
graph_obj.style = 12
graph_obj.height = 10
graph_obj.width = 15
Y_axis = Reference(sheet, min_col=2, min_row=2, max_col=2, max_row=14)
graph_obj.add_data(Y_axis, titles_from_data=True)
X_axis = Reference(sheet, min_col=1, min_row=3, max_col=1, max_row=14)
graph_obj.set_categories(X_axis)
sheet.add_chart(graph_obj, "E3")
wb.save('./test2.xlsx')
Pythonを実行します。
python3 test2.py
以下のようにグラフが作成されたので成功しました。
PythonでExcelマクロと同じ処理を書くことが出来るので、わざわざExcelマクロを作成しPythonで呼び出さずに処理を全てPythonで書いてしまった方がソースの管理もしやすいですね。
株式会社クオリアシステムズでは一緒に働く仲間を募集しています