pandas 中的超链接(到 excel 的数据框)
hyperlink in pandas (dataframe to excel)
我正在尝试在特定列中使用 url link 创建一个 excel 文件。
像这样
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')
我尝试在 link 变量中使用 excel hyperlink 公式
link = '=HYPERLINK(\"{0}/tr_events.php?triggerid={1}&eventid={2}\"; \"{3}\")'.format(args.url, trigger_id,event['eventid'], event['name'])
但是我在打开文件时收到一条错误消息,并且 'link' 列填充了零
使用 xlwt,它有一个公式模块,它将作为公式对象存储在您的数据框中。
然后您可以使用 df.to_excel 使用 pandas 将其写入 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()
函数对其进行了测试,但它运行良好。
可能您需要在公式中使用逗号 (,
) 而不是 semi-colon (;
)。这是因为 Excel 以 US-style 语法存储公式(请参阅 XlsxWriter 文档中的 Non US Excel functions and syntax)。
当我通过 XlsxWriter 运行 你的公式时,我收到关于 "We found a problem with some content in 'demo.xlsx'" 的 Excel 警告,当我单击 "yes" 恢复公式时,公式为零,因为你描述。
将 semi-colon 更改为逗号会使程序在没有警告的情况下按预期运行:
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()
输出:
我正在尝试在特定列中使用 url link 创建一个 excel 文件。 像这样
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')
我尝试在 link 变量中使用 excel hyperlink 公式
link = '=HYPERLINK(\"{0}/tr_events.php?triggerid={1}&eventid={2}\"; \"{3}\")'.format(args.url, trigger_id,event['eventid'], event['name'])
但是我在打开文件时收到一条错误消息,并且 'link' 列填充了零
使用 xlwt,它有一个公式模块,它将作为公式对象存储在您的数据框中。
然后您可以使用 df.to_excel 使用 pandas 将其写入 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()
函数对其进行了测试,但它运行良好。
可能您需要在公式中使用逗号 (,
) 而不是 semi-colon (;
)。这是因为 Excel 以 US-style 语法存储公式(请参阅 XlsxWriter 文档中的 Non US Excel functions and syntax)。
当我通过 XlsxWriter 运行 你的公式时,我收到关于 "We found a problem with some content in 'demo.xlsx'" 的 Excel 警告,当我单击 "yes" 恢复公式时,公式为零,因为你描述。
将 semi-colon 更改为逗号会使程序在没有警告的情况下按预期运行:
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()
输出: