通过Python进行数据框样式设计

时间:2018-09-03 09:38:56

标签: python dataframe textbox styles cell

我正在尝试通过python发送Outlook邮件。我使用dataframe从excel文件中导入了一些数据,经过一些过滤后,我将它们发送到邮件正文所在的位置:

    body = '<html><body>'+df.to_html()+'</body></html>'

我得到一个表,但是单元格未对齐。我不能使用justify='left/write',因为我想使单元格居中对齐,而不仅仅是列标题。我曾经使用过样式,但是它也不起作用:

df.style.set_properties(subset=df.columns,**{'width':'10em', 'text-align':'center'})\

我也尝试过,但是没有用。

p=HTML(df.to_html(classes= 'table text-align:center'))

浏览类似的问题后,我找到了另一种解决方案:

s = df.style.set_properties(**{'text-align': 'center'})
s.render()

但是它使表的border消失了,所以我对其进行了修改:

s = df.style.set_properties(**{'text-align': 'center','border-color':'Black','border-width':'thin','border-style':'dotted'})

这将border赋予单元格。但是,看来each cell在个人textbox,内部,而不像table。我该如何完成?

最终结果如下:

1 个答案:

答案 0 :(得分:0)

您无需做太多编辑即可完全做到这一点,只需添加:

'border-collapse':'collapse'

html = df[['Column 1','Column 2',]].style.hide_index().set_properties(**{'font-size': '11pt','background-color': '#edeeef','border-color': 'black','border-style' :'solid' ,'border-width': '0px','border-collapse':'collapse'}).applymap(style1,subset = 'Column 1').applymap(Style2 ,subset = 'Column 2').render()

注意:您可以忽略上面的代码片段的其他部分,唯一有用的是--'border-collapse':'collapse'

所以现在边框内的边框将被解析为一个边框

A simple single line border