首页 > 解决方案 > 将 CSS 合并到我的 Python 脚本的 HTML 中

问题描述

我对编码和python的世界还很陌生,我正在研究一种自动化,它会通过outlook触发自动电子邮件。使用的代码如下

import win32com.client as win32
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,20,size=(10, 4)), columns=list('ABCD'))


outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'user@email.com'
mail.Subject = 'Insert Subject'
table1=df.to_html()
mail.HTMLBody = """
<html>
  <head></head>
  <link rel="stylesheet" type="text/css" href="df_style.css"/>
  <body>
    <h4>Table 1: Table data<h4>
""" + table1 + """
  </body>
</html>
"""
mail.Send()

我已将我的 CSS 在桌面上保存为df_style,如下所示

.mystyle {
    font-size: 11pt; 
    font-family: Arial;
    border-collapse: collapse; 
    border: 1px solid silver;

}

.mystyle td, th {
    padding: 5px;
}

.mystyle tr:nth-child(even) {
    background: #E0E0E0;
}

.mystyle tr:hover {
    background: silver;
    cursor: pointer;
}

但是桌子的变化并没有发生,我只剩下一张普通的旧桌子。我不确定这里出了什么问题...

标签: pythoncsspython-3.xoutlook

解决方案


我可以想到两种方法:

  1. 确保您的 css 文件的路径设置正确,您可能需要使用以下内容:

css_file_path = str(os.path.dirname( file ) + '/' + 'df_style.css')

接着:

mail.HTMLBody = f"""
<html>
  <head></head>
  <link rel="stylesheet" type="text/css" href={css_file_path}"/>
  <body>
    <h4>Table 1: Table data<h4>
""" + table1 + """
  </body>
</html>
"""

2.在head部分使用style标签:

f"""
<!doctype html>
<html>
    <head>
        <style>
            body {{
                background-color: #ffffff;
            }}
        </style>
    </head>
<body>
....
</body>
</html>

注意:如果您使用 f 字符串,请记住使用 {{ 而不是一个作为您的样式。


推荐阅读