使用python将DataTable导出到Outlook邮件

问题描述

我很难找到一种方法,可以将预格式化的DataTable从Dash WebApp导出到Outlook电子邮件正文中。 我使用条件格式对DataTable进行格式化,我试图通过回调将一个按钮添加到仪表板Webapp中,该回调将抓取DataTable并将其快照导出到Outlook电子邮件正文中,以便我可以将其发送给任何需要接收电子邮件

下面的示例基于一个虚拟的数据框,我通过一个熊猫从一个虚拟的excel文件将其导入python,然后使用 dash_table 转换为一个数据表,其目的是为您提供一个示例。到目前为止,我一直在研究的代码

数据框:

**Name**   **Status**     **Age**
John        Working         31
Michael     Not working     35
Luke        Working         39
Steven      Working         28

下面的DataTable生成代码

import pandas as pd
import dash_table

df = pd.read_excel ('PATH TO MY EXCEL FILE')

tbl = dash_table.DataTable(
        id='table',columns=[{'name':i,'id':i} for i in df.columns],data=df.to_dict('records'),sort_action='native',filter_action="native",sort_mode='multi',page_action='native',page_current=0,page_size=5,style_data={
            'whiteSpace': 'normal','height': '1px','textAlign': 'center',},style_header={
            'backgroundColor': 'DarkSlateGray','fontWeight': 'bold','color': 'white','border': '2px solid grey','padding': '0.5rem 0rem 0rem 0.5rem',style_cell={'border': '2px solid DarkSlateGray','overflow': 'hidden','textOverflow': 'ellipsis','height': '1rem','font-size': '12px','font-family': 'Arial,Helvetica,sans-serif','font-weight': 'bold'},style_data_conditional = [
            {
                'if': {
                    'filter_query': '{Status} contains "Working"','border': '3px solid DarkSlateGray','backgroundColor': 'lightgreen'
            },],)

创建Outlook项目并将DataTable粘贴到电子邮件正文中的代码

import win32com.client as win32
import datetime

subject = "Email test: {}".format(datetime.datetime.Now())

outlook = win32.dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'EMAIL ADRESS'
mail.CC = 'EMAIL ADDRESS'
mail.Subject = subject
mail.HtmlBody = tbl
mail.display(False)

我收到错误 AttributeError:无法设置属性'CreateItem.HtmlBody'。

有人知道这个问题的解决方案吗? (我需要在电子邮件正文中使用与Dash DataTable相同的格式设置表格-该表格将在实际脚本中包含多个条件格式设置指令-在这里,我只写了1个,以使此处的示例保持简单尽可能)。

预先感谢您的帮助!

干杯!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)