我正在尝试创建一个 Excel 文件,其中的 url 链接位于特定列中。 像这样
def fill_table(table):
if elapsed_time > datetime.timedelta(minutes=args.mtime):
table.loc[len(table)] = [hostname, int(trigger_id), description, eventStartDate, eventEndDate, elapsed_time, message, useralias, link]
...
writer = pd.ExcelWriter(args.output, engine='xlsxwriter')
我尝试在链接变量中使用excel超链接公式
link = '=HYPERLINK(\"{0}/tr_events.php?triggerid={1}&eventid={2}\"; \"{3}\")'.format(args.url, trigger_id,event['eventid'], event['name'])
但是打开文件时收到一条错误消息,并且“链接”列用零填充
公式中您可能需要逗号 (
,
) 而不是分号 (;
)。这是因为 Excel 以美国式语法存储公式(请参阅 XlsxWriter 文档中的非美国 Excel 函数和语法)。
当我通过 XlsxWriter 运行您的公式时,我收到一条 Excel 警告,内容为“我们发现‘demo.xlsx’中的某些内容存在问题”,当我单击“是”恢复公式为零时,正如您所描述的那样。
将分号更改为逗号使程序可以在没有警告的情况下按预期运行:
import xlsxwriter
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()
link = '=HYPERLINK(\"{0}/tr_events.php?triggerid={1}&eventid={2}\", \"{3}\")'.format('www.foo.com', 'abc', 'def', 'event1')
worksheet.write('A1', link)
# Or with a hyperlink format.
url_format = workbook.get_default_url_format()
worksheet.write('A2', link, url_format)
workbook.close()
输出:
使用 xlwt,它有一个公式模块,它将作为公式对象存储在数据框中。
然后您可以使用 df.to_excel 将其写入 excel 中,如下所示:
import xlwt
... # your other code here
link = '=HYPERLINK(\"{0}/tr_events.php?triggerid={1}&eventid={2}\"; \"{3}\")'.format(args.url, trigger_id,event['eventid'], event['name'])
excel_formatted = xlwt.Formula(link)
然后,当它传递到 Excel 时,它应该显示为传递的公式。我只用
LEN()
功能测试过它,但效果很好。
如何通过 Pandas 编写超链接以实现空白/空值
帮手
def df_convert_to_url(df, column):
df[column] = df[column].apply(df_apply_hyperlink, axis=1)
def df_apply_hyperlink(row_value):
if pd.notnull(row_value) and row_value != '':
return f'=HYPERLINK("{row_value}")'
else:
return row_value
用法
df = pd.DataFrame(data)
df_convert_to_url(df, "your_column1")
df_convert_to_url(df, "your_column2")
df.to_excel(excel_data, index=False)