8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

matplotlibで生成したグラフを直接エクセルに出力する方法

Posted at

概要

matplotlibで生成したグラフをエクセルに出力する時、自分のローカルにグラフ画像を保存せずにそのままエクセルに出力したい事があると思います。

今回は「既存のエクセルファイルに新しいタブを追加し、そこにグラフを出力する」という場面を想定し、上記を実現するコードを書いていこうと思います。

サンプルコード

import io
import openpyxl

import matplotlib.pyplot as plt


fig = plt.figure()

# ~~~~~~ グラフを作っていく処理は省略 ~~~~~~~~

# 既存のエクセルファイルを開き、「chart」という名前のタブを追加する
file = 'path/to/excel.xlsx'
workbook = openpyxl.load_workbook(file)
new_sheet = workbook.create_sheet('chart')

# PCのメモリに画像を保存する
img_data = io.BytesIO()
fig.savefig(img_data, format='png')

# 表示するための画像を生成し、エクセルに出力する
img = openpyxl.drawing.image.Image(img_data)
new_sheet.add_image(img, 'G1')

# 変更を保存
workbook.save(file)

まとめ

これで作成したグラフがエクセルの新しいタブに表示されるはずです。
ローカルに不必要なデータが生成されなくていいですね。

8
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?