Python 在openpyxl中插入图像

Python 在openpyxl中插入图像,python,xlsx,openpyxl,Python,Xlsx,Openpyxl,是否可以使用openpyxl插入图像(jpeg、png等) 基本上,我想放置一个生成的图像,下面有一个图表 我在文档中没有看到任何内容,与代码的成熟度相比,这似乎有点不足。下面在单元格A1中插入了一个图像。根据您的需要调整图像位置,或者自己处理PIL图像的创建,并将其交给image() 在较旧版本的openpyxl中,以下功能有效: import openpyxl wb = openpyxl.Workbook() ws = wb.worksheets[0] img = openpyxl.dra

是否可以使用openpyxl插入图像(jpeg、png等)

基本上,我想放置一个生成的图像,下面有一个图表


我在文档中没有看到任何内容,与代码的成熟度相比,这似乎有点不足。

下面在单元格A1中插入了一个图像。根据您的需要调整图像位置,或者自己处理PIL图像的创建,并将其交给
image()

在较旧版本的openpyxl中,以下功能有效:

import openpyxl

wb = openpyxl.Workbook()
ws = wb.worksheets[0]
img = openpyxl.drawing.Image('test.jpg')
img.anchor(ws.cell('A1'))
ws.add_image(img)
wb.save('out.xlsx')

在openpyxl的当前版本中(至少高达2.4.5版),您必须这样调用图像:

img=openpyxl.drawing.image.image('test.jpg')

以安顿为例:

import openpyxl

wb = openpyxl.Workbook()
ws = wb.worksheets[0]
img = openpyxl.drawing.image.Image('test.jpg')
img.anchor(ws.cell('A1'))
ws.add_image(img)
wb.save('out.xlsx')

提供有关如何执行此操作的完整更新。此解决方案使用openpyxl版本2.4.5

我将一个图像下载到本地目录,打开一个现有工作簿,并将插入的图像保存

import openpyxl
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.drawing.image import Image
from openpyxl.utils import coordinate_from_string

openpyxl_version = openpyxl.__version__
print(openpyxl_version)  #to see what version I'm running

# downloaded a .png to local directory manually from
# "https://www.python.org/static/opengraph-icon-200x200.png"

#change to the location and name of your image
png_loc = r'c:\users\me\opengraph-icon-200x200.png'

# test.xlsx already exists in my current directory 

wb = load_workbook('test.xlsx')
ws = wb.active
my_png = openpyxl.drawing.image.Image(png_loc)
ws.add_image(my_png, 'B3')
wb.save('test.xlsx')
结果:


此代码适用于我:

import openpyxl

wb = openpyxl.Workbook()
ws = wb.worksheets[0]
ws.merge_cells('A1:A3')
img = openpyxl.drawing.image.Image('image.jpg')
row_number = 1
col_idx = 1
cell = ws.cell(row=row_number, column=col_idx)
ws.add_image(img)
wb.save('output.xlsx')

只是补充一下,我一直在使用openpyxl==2.5.6(与Python3.65一起),我不得不使用
img.anchor('A1')
而不是
img.anchor(ws.cell('A1'))


是否支持gif文件?我使用的是Xlsxwriter,它不支持嵌入gif图像,因此我想知道openpyxl是否支持嵌入gif图像。@user299709我很清楚,您对此感到疑惑。答案在于PIL支持什么样的文件格式,我发现很难相信你自己在使用谷歌时找不到这种格式。截至2017年,它看起来像:
openpyxl.drawing.Image
从2019年起已移动到:
openpyxl.drawing.Image.Image
img.anchor(ws.cell('A1'))现在是
img.anchor='A1'
我在这段代码中遇到了以下错误:
img.anchor(ws.cell('A1'))TypeError:cell()缺少1个必需的位置参数:“column'
@virtualxtc您需要在较新版本的openpyxlws中使用
img.anchor='A1'
。添加图像(my_png,'B3'))触发警告
弃用警告:调用弃用的函数锚(当图像添加到工作表时,可以传入锚)。
知道如何修复它吗?使用openpyxl版本2.5.5和2.5.6(最新稳定版本),我无法重现此警告,运行示例中发布的代码。我的openpyxl版本不太新。我会确保更新它
import openpyxl

wb = openpyxl.Workbook()
ws = wb.worksheets[0]
ws.merge_cells('A1:A3')
img = openpyxl.drawing.image.Image('image.jpg')
row_number = 1
col_idx = 1
cell = ws.cell(row=row_number, column=col_idx)
ws.add_image(img)
wb.save('output.xlsx')
import openpyxl

wb = openpyxl.Workbook()
ws = wb.worksheets[0]
img = openpyxl.drawing.Image('test.jpg')
img.anchor('A1')
ws.add_image(img)
wb.save('out.xlsx')