質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.48%

Pythonで、Excelの結合したセルに合わせて画像を貼り付けたい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 1,503

score 22

前提・実現したいこと

Python3.6.8にて、openpyxlを用いてExcelに画像を貼り付けに取り組んでいます。
画像を任意のセルに貼り付ける事は出来ましたが、セルサイズに合わせて画像サイズの編集が行えません。

発生している問題・エラーメッセージ

下図のように結合したセル(B2:E10)サイズに合わせて、貼り付け画像を編集を行いたいのですが方法が分かりません。

イメージ説明
イメージ説明

該当のソースコード

import openpyxl
import cv2

pic_file = './lena.png'

wb = openpyxl.Workbook()
ws = wb.worksheets[0]       # 1番目のシートを編集対象にする
ws.title = 'SheetName'      # 1番目のシートに名前を設定
ws.merge_cells('B2:E10')    # B2:E10 でセル結合

# 画像のサイズを取得
pic_img = cv2.imread(pic_file)   
height, width = pic_img.shape[:2]

img = openpyxl.drawing.image.Image(pic_file)
ws.add_image(img, 'B2')     # シートに画像貼り付け
wb.save('./test.xlsx')      # 保存       

試したこと

以下のリンク先に「Python Excelのセルの幅・高さを変更する」部分がありますが、
変更する行や列全体で高さや幅が変更されてしまう為、行いたい事が実現できません。
リンク内容

import openpyxl

# ブックを取得
ブック変数 = openpyxl.Workbook(ファイル名)
# シートを取得
シート変数 = ブック変数[シート名]
# セルへ書き込む
シート変数.row_dimensions[行].height = 高さ
シート変数.column_dimensions[列].width = 幅

申し訳ありませんが、
結合したセル(任意のセル)サイズに合わせた画像を貼り付けについて、
アドバイスを頂けないでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • yureighost

    2020/09/16 10:13

    一行、一列全体で大きさが共有されているのはExcelの仕様ですのでこれはどうしようもありません。
    行、列の大きさを変えずに画像を貼るとなると、行列のデフォルトの広さを計算して結合するセルを多くするか。
    画像の大きさを変えてもいいなら画像側のサイズを変えるという方法もあるかと思います。

    キャンセル

  • kuma_kuma_

    2020/09/19 11:25

    結合したセルがA1:C3だったら
    A1,A2,A3の合計が結合セルの高さ
    A1,B1,C1の合計が結合セルの幅
    になります

    Pythonで大量の画像ファイルをExcelに貼り付け
    https://www.cresco.co.jp/blog/entry/11916/
    この処理とおんなじことがしたいの?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

閲覧数の多いExcelの質問