这会从 Excel 复制一系列单元格并将它们粘贴到保留格式的 Word 文档中。该代码适用于此。但是,我还想将数据粘贴到带有单元格样式的电子邮件正文中。
import sys
from pathlib import Path
import win32com.client as win32
excel_path = str(Path.cwd() / 'input.xlsx')
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False
excel.DisplayAlerts = False
wb = excel.Workbooks.Open(excel_path)
ws = wb.Worksheets(1)
ws.Range("A1:B2").Copy()
wb.Close()
word_path = str(Path.cwd() / 'output.docx')
word = win32.gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(word_path)
doc.Content.PasteExcelTable(False, False, True)
doc.Close()
# That works, but now I want to paste the copied Excel range into the body of
# an email. The solution may look something like the following with the "X"
# as a "Selection" or "Range" object for the PasteExcelTable method.
outlook = win32.gencache.EnsureDispatch('Outlook.Application')
new_mail = outlook.CreateItem(0)
new_mail.To = 'person@email.com'
new_mail.Body = ws.Range("A1:B2").PasteExcelTable(False, False, True)
new_mail.Send()
sys.exit()
我相信[PasteExcelTable] 2可用于在 Outlook 中实现这一点,就像它对 Word 文件所做的那样,也许有人知道如何做到这一点。
我没有正确定义范围。这是我尝试之一的示例:
new_mail.Body = ws.Range("A1:B2").PasteExcelTable(False, False, True)
我知道这可以通过 VBA 完成,但我想使用 Python 并查看 PasteExcelTable 是否适用于此。如果不可能,我将捕获数据范围的图像并将其粘贴到电子邮件中。