根据您提供的代码,您已经将 wb.save(name_str)
放在了正确的位置。这样做是正确的,因为在添加图像后保存工作簿是一个常见的做法。
请注意,代码中使用的 decode_base64_to_image
函数并不属于 Python 标准库。您需要确保自己实现或引入此函数,以便将 Base64 编码字符串转换为 Image 对象。
另外,关于关闭图像文件对象 image.close()
的部分,在这里似乎是多余的。因为 image
变量代表的应该是 PIL Image 对象,并没有与文件相关联。所以可以将这行代码删除。
最终修改后的代码示例:
”`python from openpyxl import load_workbook from openpyxl.drawing.image import Image as XLImage from PIL import Image
打开现有的Excel工作簿
wb = load_workbook(name_str) ws = wb[site_name] # 替换为实际的工作表名称
temp_image_path = str(sys.argv[1]) + str(date_time) + “.png”
将Base64编码字符串转换为Image对象
image = decode_base64_to_image(sign_image, temp_image_path)
加载图像文件并转换为PIL Image对象(这一行可能需要替换)
pil_image = Image.open(image)
调整图像尺寸以适应单元格大小(可选)
img_width, img_height = pil_image.size cell_width = ws.column_dimensions[‘G’].width - 2 # 减去边框宽度,根据实际情况调整值 cell_height = (cell_width / img_width) * img_height
resized_image = pil_image.resize((int(cell_width), int(cell_height)))
创建Excel工作簿中的图像对象,并插入到指定位置
xl_img = XLImage(resized_image) xl_img.width = cell_width - 2 # 减去边框宽度,根据实际情况调整值 xl_img.height = cell_height - 2 # 减去边框宽度,根据实际情况调整值 ws.add_image(xl_img, ‘G29’)
保存Excel文件
wb.save(name_str)
“`
内容由零声教学AI助手提供,问题来源于学员提问