问题描述
我很难找到一种方法,可以将预格式化的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
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 (将#修改为@)