Вставьте данные Excel в указанный c абзац MS Word, используя win32com и Python - PullRequest
1 голос
/ 27 апреля 2020

Я хочу скопировать данные Excel (например, таблицы или заданный диапазон c) и вставить их в конец абзаца документа MS Word, не заменяя его текст. Вышеупомянутый процесс должен быть выполнен с использованием Python и в идеале с использованием pywin32 (win32com.client).

Приведенный ниже код прекрасно работает, но данные Excel могут быть вставлены только в начало документа Word:

def copy_from_excel_paste_to_word(word_filename, excel_filename):

    # Word init
    word = client.Dispatch("Word.Application")
    word.Visible = True
    report = word.Documents.Open(word_path)
    wdRange = report.Content

    # Excel init
    excel = client.Dispatch("Excel.Application")
    checklist = excel.Workbooks.Open(excel_path)
    sheet = checklist.Worksheets("Names")
    sheet.Range("B2:D15").Copy()

    # Paste Excel data at the beginning of the doc, while keeping doc data
    wdRange.Collapse(1)
    wdRange.PasteExcelTable(False, False, False) # ? How can i specify the paste location ?

    # Save and quit
    word.ActiveDocument.Close(SaveChanges=True)
    excel.Quit()
    word.Quit()

1 Ответ

0 голосов
/ 29 апреля 2020

Чтобы свернуть до конца вместо начала любого Range:

# Paste Excel data at the end of the doc, while keeping doc data
wdRange.Collapse(0)

Примечание: чтобы увидеть такую ​​информацию, запустите Word. Нажмите Alt + F11, чтобы открыть редактор VBA, затем F2, чтобы запустить браузер объектов. Если вы затем наберете, например, Collapse в поле поиска, вы можете щелкнуть по нему и нажать клавишу F1, чтобы получить справку topi c.

Вы также увидите, что внизу в результатах list и запись WdCollapseDirection, которая покажет значения, которые можно передать в метод Collapse. Нажмите на это, и два перечисления появятся в нижнем списке. Нажмите на один, затем посмотрите на панель в самом низу, чтобы увидеть числовое значение, необходимое для вашего кода (0 или 1).

...