Python openpyxl 棒グラフの出力
『openpyxl』を使用して
収支の比較を棒グラフで出力します
収支元のデータを読み込み
別ファイルへグラフを追加して保存します
収支元のファイル
実行結果
定数
グラフの出力先
出力ファイルやフォルダ等、定数化しています
1 2 3 4 5 6 7 8 |
# グラフの出力先セル CHART_OUT_PUT_CELL = "G2" # 出力フォルダ名 FOLDER_NAME = "C:\\Python\\tmp\\" # 取り込み対象のExcelファイル名 IMPORT_FILE_NAME = "収支.xlsx" # 出力Excelファイル名 OUT_PUT_EXCEL_FILE_NAME = "収支_グラフ.xlsx" |
ファイルの読み込み
1 2 3 4 5 6 |
import openpyxl # Excelファイルの読み込み book = openpyxl.load_workbook(FOLDER_NAME + IMPORT_FILE_NAME) sheet = book.active |
棒グラフの設定
1 2 3 |
# 棒グラフ from openpyxl.chart import BarChart, Reference chart = BarChart() |
1 2 |
# グラフタイトル chart.title = sheet["A1"].value |
データ部
『Reference』を使用して範囲を指定します
引数は、『最小列』『最大列』『最小行』『最大行』の順番で
指定していますが、順番は自由に変更可能です
1 2 3 4 5 6 7 8 9 10 11 |
# データ部の指定 """ サンプル values = Reference("シートオブジェクト", min_col="最小列", max_col="最大列", min_row="最小行", max_row=”最大行”) """ values = Reference(sheet, min_col=2, max_col=3,#列 min_row=2, max_row=5)#行 # 『titles_from_data=True』指定したデータ領域の先頭行を、グラフラベルへ設定 chart.add_data(values, titles_from_data=True) |
目盛間隔も指定
1 2 |
# 縦目盛間隔 chart.y_axis.majorUnit = 50000 |
ヘッダ部
1 2 3 4 5 6 7 8 9 10 11 |
# ヘッダ部の指定 """ xvalues = Reference(sheet, min_col="最小列", max_col="最大列", min_row="最小行", max_row=”最大行”) chart.set_categories(xvalues) """ xvalues = Reference(sheet, min_col=1, max_col=1,#列 min_row=3, max_row=5)#行 chart.set_categories(xvalues) |
ブラフを出力してファイルを別名保存
1 2 3 4 5 |
# グラフの出力先 sheet.add_chart(chart, CHART_OUT_PUT_CELL) # Excelファイル保存 book.save(FOLDER_NAME + OUT_PUT_EXCEL_FILE_NAME) |
サンプルソース全文
サンプルソースの全文、コピペで実行可能です
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# グラフの出力先セル CHART_OUT_PUT_CELL = "G2" # 出力フォルダ名 FOLDER_NAME = "C:\\Python\\tmp\\" # 取り込み対象のExcelファイル名 IMPORT_FILE_NAME = "収支.xlsx" # 出力Excelファイル名 OUT_PUT_EXCEL_FILE_NAME = "収支_グラフ.xlsx" import openpyxl # Excelファイルの読み込み book = openpyxl.load_workbook(FOLDER_NAME + IMPORT_FILE_NAME) sheet = book.active # 棒グラフ from openpyxl.chart import BarChart, Reference chart = BarChart() # グラフタイトル chart.title = sheet["A1"].value # データ部の指定 """ サンプル values = Reference("シートオブジェクト", min_col="最小列", max_col="最大列", min_row="最小行", max_row=”最大行”) """ values = Reference(sheet, min_col=2, max_col=3,#列 min_row=2, max_row=5)#行 # 『titles_from_data=True』指定したデータ領域の先頭行を、グラフラベルへ設定 chart.add_data(values, titles_from_data=True) # 縦目盛間隔 chart.y_axis.majorUnit = 50000 # ヘッダ部の指定 """ xvalues = Reference(sheet, min_col="最小列", max_col="最大列", min_row="最小行", max_row=”最大行”) chart.set_categories(xvalues) """ xvalues = Reference(sheet, min_col=1, max_col=1,#列 min_row=3, max_row=5)#行 chart.set_categories(xvalues) # グラフの出力先 sheet.add_chart(chart, CHART_OUT_PUT_CELL) # Excelファイル保存 book.save(FOLDER_NAME + OUT_PUT_EXCEL_FILE_NAME) |
コメント