【问题标题】:Python Pandas to_html stylingPython Pandas to_html 样式
【发布时间】:2017-12-16 01:57:46
【问题描述】:

我正在尝试将 csv 转换为 html 表格,将其插入电子邮件并发送出去。我发现了一个类似的问题Here,似乎效果很好。

我的电子邮件正在发送,但无论我做什么,我似乎都无法为表格设置样式。理想情况下,我想为表格添加一个彩色标题并可能修改边框。这将是每周自动发送的内容,因此我希望它尽可能自动化。

with open('fileTest.html', 'r') as f:
    x = f.read()
f.close()
html = x

with open('testy.csv') as input_file:
    reader = csv.reader(input_file)
    data = list(reader)

#text = text.format(table=tabulate(data, headers="firstrow", tablefmt="html"))
html = html.format(table=tabulate(data, headers="firstrow", tablefmt="html"))

message = MIMEMultipart(
    "alternative", None, [MIMEText(text), MIMEText(html, 'html')])

这是我的代码示例,完整版与我分享的链接中的答案基本相同。

如果我尝试在文件顶部添加样式标记,则 .format() 会出现关键错误。

编辑

我应该提到我正在从 pandas to_html 生成我的 html

import pandas as pd
from IPython.display import HTML
df = pd.read_csv('testy.csv')
df.to_html('fileTest.html')

我也试过这样:

HTML(df.to_html(filetest.html))

这是前几行输出的示例

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Name of Region</th>
      <th>Number Sent To</th>
      <th>YTD Calls</th>
      <th>MTD Calls</th>
      <th>Week of</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Windham</td>
      <td>18032515985</td>
      <td>3</td>
      <td>1</td>
      <td>0</td>
    </tr>

Here is 指向样式文档的链接。但我发现他们缺乏

【问题讨论】:

    标签: python html css pandas email


    【解决方案1】:

    改用to_html 样式,使用style

    import pandas as pd
    
    def style_line(s):
        '''Rendering odd and even rows with different color'''
        return ['background-color: #D4E6F1' if i%2!=0 else 'background-color: #85C1E9' for i in range(len(s))]
    
    
    df = pd.read_csv('testy.csv')
    # df.to_html('fileTest.html')
    df = pd.DataFrame(df)
    df = df.style.apply(style_line).render()
    print(df)
    

    【讨论】:

      【解决方案2】:

      html = html.format(table=tabulate(data, headers="firstrow", tablefmt="html")) 行之后,为什么不这样做:

      style = '''
      <style>
          #headings {
          font-size:26px !important;
          line-height:32px !important;
          }
      </style>
      '''
      
      html = style + str(html)
      message = MIMEMultipart(
          "alternative", None, [MIMEText(text), MIMEText(html, 'html')])
      

      这应该为您的表格设置样式。

      【讨论】:

      • 试了一下,对桌子没有影响
      • 是的,我会编辑它。我也做了更多的研究,我将修改我的问题,因为我遗漏了一些可以提供帮助的东西。我正在使用 pandas to_html 方法生成我的 html。我认为有一种方法可以设置此样式,但无法弄清楚
      猜你喜欢
      • 1970-01-01
      • 2019-03-14
      • 2015-05-20
      • 1970-01-01
      • 2019-02-06
      • 2019-08-10
      • 1970-01-01
      • 2014-12-04
      • 2013-01-31
      相关资源
      最近更新 更多