@utsiye

Почему не получается копировать excel таблицу в docx на python?

Мне нужно находить определенное ключевое слово в docx документе и вставлять туда таблицу из xlsx документа, вместе со всеми стилями. Но проблема, оно этого не делает почему-то. Вставляет без стилей и без границ. Вот код:
from openpyxl import load_workbook
from docx import Document
from docx.shared import Inches

def create_file():
    # Загрузка данных из файла Excel
    workbook = load_workbook('df_general.xlsx')
    worksheet = workbook.active
    data = []
    for row in worksheet.iter_rows(values_only=True):
        data.append(row)

    # Открытие шаблона Word
    document = Document('шаблон.docx')

    # Поиск места для вставки таблицы
    for paragraph in document.paragraphs:
        if '{{table_df_general.xlsx}}' in paragraph.text:
            # Создание таблицы в документе Word
            table = document.add_table(rows=len(data), cols=len(data[0]))

            # Вставка данных из файла Excel
            for i, row in enumerate(table.rows):
                for j, cell in enumerate(row.cells):
                    cell.text = str(data[i][j])

            # Копирование форматирования из таблицы "example_table"
            example_table = document.tables[0]
            for source_row, target_row in zip(example_table.rows, table.rows):
                for source_cell, target_cell in zip(source_row.cells, target_row.cells):
                    target_cell.width = source_cell.width
                    target_cell.paragraphs[0].alignment = source_cell.paragraphs[0].alignment

                    # Копирование форматирования шрифта
                    source_font = source_cell.paragraphs[0].runs[0].font
                    target_font = target_cell.paragraphs[0].runs[0].font

                    target_font.name = source_font.name
                    target_font.size = source_font.size
                    target_font.bold = source_font.bold
                    target_font.italic = source_font.italic
                    target_font.underline = source_font.underline
                    target_font.color.rgb = source_font.color.rgb

            # Удаление места для вставки таблицы
            paragraph.text = paragraph.text.replace('{{table_df_general.xlsx}}', '')


    document.save('df_general.docx')

def main():
    create_file()

if __name__ == '__main__':
    main()


В чем проблема?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
meusov11
@meusov11
Привет
Метод add_table() не поддерживает прямое копирование стилей таблицы из Excel. Можно использовать python-docx-template. Дока
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы