Выравнивание изображений с openpyxl
Я искал пару дней и не могу найти ответ. Я создаю рабочий лист с python и использую модуль openpyxl. Я могу отформатировать ячейки и вставить значения в ячейках. Я могу вставить изображения в ячейки, но мне нужно выровнять изображения.
align = Alignment(horizontal = 'left', vertical = 'center', wrap_text = True
IMAGECELL = ws.cell['A1']
IMAGECELL.alignment = align
Это мой код для выравнивания текста. Это не работает с изображениями.
0 ответов
Я знаю, что мое решение не идеально, но оно сработало для меня, просто хочу помочь другим сэкономить время. Я тоже хотел добавить несколько изображений и выровнять их, но когда я попытался добавить изображения, они были помещены друг на друга. Оказалось, что надо использоватьanchors
в openpyxl для размещения изображений. и я хотел поместить их в сетку 2 x 3. Вот мое решение.
def excel_writer(self, _location=None, images=None):
if images is None or len(images) == 0:
return
for image in images:
proto_image = Image(str(image))
# A bit resizing
proto_image.height = 250
proto_image.width = 300
if count == 0:
proto_image.anchor = 'A3'
if count == 1:
proto_image.anchor = 'F3'
if count == 2:
proto_image.anchor = 'L3'
if count == 3:
proto_image.anchor = 'A20'
if count == 4:
proto_image.anchor = 'F20'
if count == 5:
proto_image.anchor = 'L20'
if count == 6:
proto_image.anchor = 'A43'
sheet.add_image(proto_image, proto_image.anchor)
count += 1
workbook.save(_location)
Итак, я просматриваю список изображений и добавляю их на лист в позиции привязки. Для первого изображения счетчик равен 0, а привязка - A3; Это означает 1-й столбец, 3-й ряд. Для 2-го изображения такая же 3-я строка, но другой столбец и так далее.
Следует отметить, что расстояние между столбцами я рассчитал вручную. Если ваше изображение больше по ширине, вам нужно будет дополнительно переместить его по оси X +ve, например, из столбца A в L.