【发布时间】:2021-03-20 01:21:25
【问题描述】:
我试图在工作中复制和自动化一个很好用的做法:我试图在 openpyxl 中的一个单元格中放置多个图像和文本,但是我只能将图像锚定到单元格的左上角,并且有没有找到比这更准确的定位方法。所以它们最终会与彼此和文本重叠。
from openpyxl import Workbook
from openpyxl.drawing.image import Image
wb = Workbook()
ws = wb.active
img = Image('image.png')
ws.add_image(img, 'B2') # img.anchor is now 'B2'
wb.save('test.xlsx')
在上述情况下为“B2”。我还没有找到任何方法来获取(或转换)像素坐标。但如果我能做到这一点,那么我认为我可以将单元格内的图像和文本格式化为清晰/可接受(如果不漂亮)的水平。
openpyxl.drawing.image 和 openpyxl.worksheet.worksheet 都没有我可以看到的绝对锚定方法。 openpyxl.drawing.spreadsheet_drawing 可以,但我不确定是否或如何使用它。
有没有办法做到这一点?还是我忽略了实现此目标的另一种方法?
【问题讨论】:
-
您可以创建自己的锚点:OneCell、TwoCell 和 Absolute,但我认为绝对锚点仅用于 ChartSheets。
-
@stovfl 这篇文章涉及图像大小和尺寸,效果很好(img.height = blah),但图像的位置仍然只能精确到一个单元格。
-
@CharlieClark 有任何关于如何制作自己的锚的信息吗?这是我真正苦苦挣扎的地方。
-
您最好查看 OOXML 规范,openpyxl 将允许您通过图像传递锚点。