首页 > 解决方案 > 调整excel单元格以适合图像

问题描述

当我将图像写入 excel 文件时,我需要使图像适合一个 excel 单元格。我知道图像的大小(以像素为单位),但我不知道如何使用 xlsxwriter 调整 excel 单元格的高度和宽度,以便我的图像完全适合单元格。

标签: pythonexcelxlsxwriter

解决方案


提供一个示例,说明如何使用 PIL(Python Imaging Library - Link to docs)缩小图像,然后使用 xlsxwriter 将其放置在 .xlsx 文件中。worksheet.set_column()通过此示例,您可以看到如何使用 PIL 调整图像大小,然后使用worksheet.set_row()您可以调整单元格大小以适应图像大小。

如此有效,您可以调整图像的大小、调整 excel 单元格的大小或两者兼而有之。可能需要进行一些测试才能获得合适的尺寸。

为了使这个答案可重现,我使用 urllib 模块将图像下载到本地目录(如果您使用本地文件,则不需要该模块)。

import urllib.request
from PIL import Image
import xlsxwriter
import os

url = 'https://upload.wikimedia.org/wikipedia/en/thumb/4/43/Ipswich_Town.svg/255px-Ipswich_Town.svg.png'

urllib.request.urlretrieve(url, "local_100_perc.png")

with Image.open("local_100_perc.png") as img:
    width_100 = img.width
    height_100 = img.height

width_30 = int(round(width_100 * 0.3, 0))
img = Image.open('local_100_perc.png')
wpercent = (width_30/float(width_100))
hsize = int((float(height_100)*float(wpercent)))
img = img.resize((width_30,hsize), Image.ANTIALIAS)
img.save('local_30_perc.png') 

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()
worksheet.set_column('A:B', 10)
worksheet.set_row(1, 70)
worksheet.write('A2', 'Image:')
worksheet.insert_image('B2', 'local_30_perc.png')

workbook.close()

预期输出:

预期的 test.xlsx


推荐阅读