用Pandas为DataFrame列加超链接嵌入Outlook邮件时遇NoneType错误求助
问题解决:DataFrame转HTML插入Outlook邮件并添加Jira超链接
错误原因
你的format_df函数没有返回值,默认返回None,导致拼接HTML字符串时触发TypeError: can only concatenate str (not "NoneType") to str错误。此外原代码会给替换后的'-'生成无效Jira链接,需要优化。
修正后的代码
1. 格式化DataFrame的函数
import pandas as pd def format_df(dataframe): # 仅为非空(非'-')的Issue_Ticket添加Jira超链接 dataframe['Issue_Ticket'] = dataframe['Issue_Ticket'].apply( lambda x: f'<a href="https://jira.net/browse/{x}">{x}</a>' if x != '-' else x ) # 返回生成的HTML字符串(必须加return) return dataframe.to_html(justify='center', escape=False, na_rep='-')
2. 生成邮件HTML正文的代码
df = pd.read_excel("Test_Results.xlsx", sheet_name='data').fillna('-') html_body = '''\ <html><head></head> <body>''' + format_df(df) + '''</body></html>
关键说明
- 必须在
format_df函数中添加return,把to_html生成的HTML字符串返回,否则函数默认返回None。 escape=False确保生成的<a>标签不会被转义成纯文本,能在邮件中正常显示超链接。- 增加了对
'-'的判断,避免给空值生成无效的Jira链接。如果想直接判断原数据的NaN,可把条件改成if not pd.isna(x),同时去掉提前的fillna('-'),直接在to_html的na_rep参数中指定空值显示内容。
内容的提问来源于stack exchange,提问作者Bharath
相关产品推荐
相关产品推荐

