python - 调整excel单元格以适合图像
问题描述
当我将图像写入 excel 文件时,我需要使图像适合一个 excel 单元格。我知道图像的大小(以像素为单位),但我不知道如何使用 xlsxwriter 调整 excel 单元格的高度和宽度,以便我的图像完全适合单元格。
解决方案
提供一个示例,说明如何使用 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()
预期输出:
推荐阅读
- php - 如何使用 php 在一个软件上运行命令
- javascript - JavaScript 在数组中查找单个元素
- c# - 如何在完整多边形的两点之间的某处添加一个点
- android - 设置 Cardview 形状和背景半透明
- firebase - 如何模拟/存根 react-native-firebase?
- python - Python 轮询记录传感器数据
- c - Check if subarray with sum 0 exists or not
- python - OpenCV 脚本:AttributeError:“NoneType”对象没有属性“shape”
- shell - Jenkins shell 脚本意外结束文件
- python - 稀疏矩阵的 R 内部处理