Скопируйте содержимое Word в Outlook - PullRequest
0 голосов
/ 12 октября 2018

У меня есть документ Word с форматированным текстом, изображениями и таблицами.Вы можете вручную скопировать его содержимое и вставить в Outlook без проблем.Как это сделать на Python?

Мой код:

import win32com.client

word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(your_doc_path)
contents = 'What here?'  # doc.Content?

outlook = win32com.client.Dispatch("Outlook.Application")
# Create a new MailItem object
msg = outlook.CreateItem(0)

msg.Body = 'What here?'  # `contents` throws pywintypes.com_error
msg.Display(False)

Ближайшие проблемы:

Скопируйте формат Word в сообщение Outlook

Содержимое документа Word как текст сообщения электронной почты

Как вставить в Outlook из Microsoft Word

Экспорт расширенного текста в Outlook и сохранение форматирования

Не работает:

1-Сохранение документа Wordв формате HTML (аналогично RTF) и

with open(html_path, 'r', errors='ignore') as f:
    # Possible UnicodeDecodeError
    doc_body = f.read()

    msg.BodyFormat = 2  # olFormatHTML
    msg.Body = doc_body

2-Reading document.xml в архивном документе Word.

Возможный путь:

Свойство WordEditorкласс Inspector возвращает экземпляр документа Word, который представляет тело сообщения.

Как применить WordEditor через win32com?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

С помощью Алины Ли вот окончательное решение:

import win32com.client

word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(word_path)
doc.Content.Copy()
doc.Close()

outlook = win32com.client.Dispatch("Outlook.Application")
# Create a new MailItem object
msg = outlook.CreateItem(0)
msg.GetInspector.WordEditor.Range(Start=0, End=0).Paste()

msg.Display(False)

Изображения, таблицы, формат - все хорошо.

0 голосов
/ 15 октября 2018

Вы можете скопировать содержимое Word в Outlook с помощью приведенного ниже кода:

import win32com.client
app=win32com.client.Dispatch('Word.Application')
doc=app.Documents.Open(r'D:\winGUI\test\1.doc')
doc.Content.Copy()
doc.Close()

Вставить, используя Paste () метод

...