下図は、例題用に適当に作成した月別のぶどうの売り上げ表です。A列に月、B列に商品単価、C列に売り上げ個数としたエクセルファイルです。
本プログラムを実行すると、下図のようにD列に月別の売り上げをセルに数式で書き込みます。この時、D列の最終行に合計売上も計算します。
さらに、月別の売り上げを棒グラフ化します。
■本プログラム
#!/usr/bin/env python # coding: utf-8 # In[1]: import os import openpyxl from openpyxl.chart import Reference from openpyxl.chart.axis import DateAxis from openpyxl.chart.shapes import GraphicalProperties # エクセルファイルパスを指定 filepath = os.getcwd() + '/売上.xlsx' filepath # In[2]: # エクセルファイルのインスタンス生成(オブジェクト) # 引数data_only=Falseで、セル内に数式がある場合は数式で読み込む wb = openpyxl.load_workbook(filepath, data_only=False) # ワークシートを読み込む sheet_name = 'ぶどう' ws = wb[sheet_name] ws # In[3]: # 最終行を取得 max_row = ws.max_row max_row # In[4]: # 最終列を取得 max_col = ws.max_column max_col # In[5]: # 合計の計算 ws.cell(row = 1, column = max_col + 1).value = '合計' sum = 0 for row in range(2, max_row + 1, 1): ws.cell(row = row, column = max_col + 1).value = '=B' + str(row) + '*' + 'C' + str(row) s = ws.cell(row = row, column = 2).value * ws.cell(row = row, column = 3).value sum += s ws.cell(row = max_row + 1, column = max_col + 1).value = '=SUM(D2:D' + str(max_row) + ')' # In[6]: # 棒グラフ chart = openpyxl.chart.BarChart() chart.type = "col" # 'col'は縦棒グラフ, 'bar'は横棒グラフ chart.title = sheet_name + ' 合計:' + str(sum) + ' 円' chart.style = 2 # 棒グラフの色、形 chart.height = 7 chart.width = 11 # Xラベル #chart.x_axis.title = "月" # Yラベル chart.y_axis.title = '売上 [円]' # Xデータの指定 X_values = Reference(ws, min_row=2, min_col=1, max_row=max_row, max_col=1) X_titles = Reference(ws, min_row=2, min_col=1, max_row=max_row) chart.add_data(X_values) chart.set_categories(X_titles) # Yデータの指定 Y_values = Reference(ws, min_row=1, min_col=max_col + 1, max_row=max_row, max_col=max_col + 1) chart.add_data(Y_values, titles_from_data=True) # 背景色 #props = GraphicalProperties(solidFill="FFCC00") #chart.plot_area.graphicalProperties = props # 凡例隠す chart.legend = None # グラフの位置 ws.add_chart(chart, "F2") # 新ファイルに保存 wb.save('売上_まとめ.xlsx') wb.close() # In[ ]:
以上
<広告>
リンク