【问题标题】:hyperlink in pandas (dataframe to excel)pandas 中的超链接(到 excel 的数据框)
【发布时间】:2019-06-04 13:53:28
【问题描述】:

我正在尝试在特定列中创建一个带有 url 链接的 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')

我尝试在链接变量中使用excel超链接公式

link = '=HYPERLINK(\"{0}/tr_events.php?triggerid={1}&eventid={2}\"; \"{3}\")'.format(args.url, trigger_id,event['eventid'], event['name'])

但是打开文件时我收到一条错误消息,并且“链接”列用零填充

【问题讨论】:

  • “我打开文件时收到一条错误消息”看到那个错误会很好
  • This 也是一个很好的文档页面,可以了解更多信息。

标签: python pandas xlsxwriter


【解决方案1】:

您可能需要在公式中使用逗号 (,) 而不是分号 (;)。这是因为 Excel 以美式语法存储公式(请参阅 XlsxWriter 文档中的 Non US Excel functions and syntax)。

当我通过 XlsxWriter 运行您的公式时,我收到一条关于“我们发现 'demo.xlsx' 中的某些内容存在问题”的 Excel 警告,并且当我单击“是”以恢复公式为零时,正如您所描述的那样。

将分号更改为逗号可使程序在没有警告的情况下正常运行:

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()

输出:

【讨论】:

    【解决方案2】:

    使用具有公式模块的 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() 函数对其进行了测试,但效果很好。

    【讨论】:

      猜你喜欢
      • 2017-01-20
      • 2018-02-22
      • 2020-12-28
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 2017-07-23
      相关资源
      最近更新 更多