下図は、例題用に適当に作成した月別のぶどうの売り上げ表です。A列に月、B列に商品単価、C列に売り上げ個数としたエクセルファイルです。

本プログラムを実行すると、下図のようにD列に月別の売り上げをセルに数式で書き込みます。この時、D列の最終行に合計売上も計算します。

さらに、月別の売り上げを棒グラフ化します。

■本プログラム
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
wb = openpyxl.load_workbook(filepath, data_only=False)
sheet_name = 'ぶどう'
ws = wb[sheet_name]
ws
max_row = ws.max_row
max_row
max_col = ws.max_column
max_col
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) + ')'
chart = openpyxl.chart.BarChart()
chart.type = "col"
chart.title = sheet_name + ' 合計:' + str(sum) + ' 円'
chart.style = 2
chart.height = 7
chart.width = 11
chart.y_axis.title = '売上 [円]'
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_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)
chart.legend = None
ws.add_chart(chart, "F2")
wb.save('売上_まとめ.xlsx')
wb.close()
以上
<広告>
リンク