【问题标题】:Paste Excel clip to body of an email through Python通过 Python 将 Excel 剪辑粘贴到电子邮件正文
【发布时间】:2014-07-24 13:16:34
【问题描述】:

我在 Python 中使用 win32com.client 发送电子邮件。

但是我希望电子邮件的正文是一个表格(HTML 格式的表格),我可以先在 Excel 中完成,然后复制和粘贴(但是如何?),或者直接编辑相应的 Pandas 数据框。

newMail.body = my_table 这是一个 Pandas 数据框不起作用。

所以我想知道是否有更聪明的方法,例如在 Python 中将 Excel 与 Outlook 应用程序结合起来?

干杯,

【问题讨论】:

  • “邮件正文应该是表格”是什么意思?您想要一个 HTML 格式的表格版本吗? Excel 是它自己的专有格式,据我所知,它不能直接嵌入到电子邮件中。
  • @PatrickCollins 我的意思是在 Excel 中格式化的表格。比如网格线、数字格式、对齐方式等。我没学过 HTML 版本?
  • 您将如何在您的普通电子邮件客户端中执行此操作?
  • @PatrickCollins 我会打开 Excel,选择格式化范围,复制并粘贴到电子邮件的消息部分...
  • @PatrickCollins 我明白了。所以我确实需要原始表格的 HTML 格式版本。我必须使用 win32com.client 模块在 Python 中完成,你有什么想法吗?谢谢!

标签: python email outlook win32com


【解决方案1】:

这里有关于如何将 Excel 表格转换为 HTML 的解决方案:How do I save Excel Sheet as HTML in Python?,然后您只需将 HTML 放到电子邮件正文中即可。

cmets 中的每个请求:

在名为 mytable.html 的文件中获得表格的 HTML 格式版本后,您可以将其放入电子邮件中:newMail.body = open("mytable.html").read()

【讨论】:

  • 谢谢,但该链接将 Excel 保存为 html,我希望将表格直接粘贴到电子邮件的邮件正文中。不是附件。
  • 将 HTML 粘贴到电子邮件正文中。
  • 说文件名是“myexcel.html”,我不能简单地把 newMail.body = myexcel.html 因为它只粘贴文件名,而不是内容..
  • 很高兴为您提供帮助。如果您觉得它有帮助,请考虑支持并接受此答案。
  • newMail.body = open("mytable.html").read() 对我不起作用。它显示原始 html 代码。但如果我改为 newMail.HTMLbody。它说“此页面使用框架,但您的浏览器不支持它们”,我怎样才能准确地将 excel 粘贴到电子邮件正文中?沮丧。 @PatrickCollins
【解决方案2】:

我正在回复旧任务,但它在搜索中排名靠前,可能会有所帮助。

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()

【讨论】:

  • 有没有办法发送带有颜色格式的 excel 内容。上述解决方案适用于未格式化的数据。
猜你喜欢
  • 1970-01-01
  • 2017-11-25
  • 2019-08-02
  • 2013-04-15
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多