5

PC がクラッシュしたため、すべてのライブラリを再インストールする必要がありました。インストールが完了した後、一部のライブラリが新しいバージョンに更新され、コードが機能しなくなったことに気付きました (openpyxl の新しいバージョンが原因で)。

Excel ファイルに画像を挿入しようとしていますが、表示されるエラー メッセージがわかりません。他の質問は、古いバージョンのopenpyxl(私の元のコードが機能していた)に関するものであるようですが、現在のバージョンのopenpyxlでは機能しません。私のコードを修正する方法を理解するのを手伝ってくれてありがとう。:)

元のコード (動作):

import openpyxl
wb = openpyxl.load_workbook(filename)
ws = wb.get_sheet_by_name(sheet_name)
img = openpyxl.drawing.image.Image(img_name)
img.anchor(ws['D2'])
ws.add_image(img)
wb.save(filename)

現在のコード (動作しません):

import openpyxl
wb = openpyxl.load_workbook(filename)
ws = wb[sheet_name]
img = openpyxl.drawing.image.Image(img_name)
img.anchor(ws.cell(row=2,column=4))
ws.add_image(img)
wb.save(filename)

エラーメッセージ:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-9efc1289cc73> in <module>()
----> 1 img.anchor(ws.cell(row=2,column=4))

TypeError: 'str' object is not callable

ヒントはありますか?

ありがとう

編集:どうやら、img.anchor が文字列になりました。以前は何だったのかわかりませんが、どうやら文字列ではなかったようです(エラーメッセージがなかったためです。次のように変更するとアンカーが設定されますが、別のエラーメッセージが表示されます。

アンカーを設定します:

img.anchor = ws.cell(row=2,column=4)
ws.add_image(img)

しかし、保存しようとするとクラッシュします。

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-13-2cfd938ccf60> in <module>()
      1 img.anchor = ws.cell(row=2,column=4)
      2 ws.add_image(img)
----> 3 wb.save(filename)

AttributeError: 'Cell' object has no attribute 'upper'
4

1 に答える 1