通过Python将Excel剪贴板内容粘贴到邮件正文

1 投票
2 回答
10596 浏览
提问于 2025-04-18 08:31

我在用Python的win32com.client发送邮件。

不过我想邮件的内容是一个表格(用HTML格式的表格),我可以先在Excel里做一个表格,然后复制粘贴(但是怎么做呢?),或者直接编辑相应的Pandas数据框。

newMail.body = my_table,这个是一个Pandas数据框,但这样不管用。

所以我在想有没有更聪明的方法,比如在Python里把Excel和Outlook结合起来?

谢谢!

2 个回答

0

我在回复一个旧的问题,但它在搜索中排在最前面,可能会对大家有帮助。

import win32com.client as win32
import pandas as pd
# Read A to D column and first 5 rows

df = pd.read_excel('yourfilepath.xlsx', index_col=False, nrows = 5,  usecols = "A:D")

body = df.to_html()

outlook = win32.gencache.EnsureDispatch('Outlook.Application')
new_mail = outlook.CreateItem(0)
new_mail.To = 'person@email.com'
new_mail.HTMLBody = (body)
new_mail.Send()
3

这里有一些关于如何把你的Excel表格转换成HTML格式的解决方案,具体可以参考这个链接:我该如何在Python中将Excel表格保存为HTML?,然后你只需要把生成的HTML内容放到你邮件的正文里。

根据评论中的请求:

一旦你把表格保存成HTML格式,并命名为 mytable.html,你可以用以下代码把它放进邮件里:newMail.body = open("mytable.html").read()

撰写回答