Выравнивание изображений с 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.

Другие вопросы по тегам