【问题标题】:Python openpyxl lose hyperlink when modifying existed filesPython openpyxl在修改现有文件时丢失超链接
【发布时间】:2014-05-31 07:17:14
【问题描述】:

奇怪的是,当用openpyxl加载一个已经存在的excel并再次保存时,文件中的超链接消失了。

无论是openpyxl 1.7.2还是最新的1.8.5都有这个问题。

有人可以帮忙解决这个问题吗?

或者有没有比openpyxl更好的选择?

我知道 xlrd/xlwt 和 XlsxWriter,但 xlwt 不支持 .xlsx 文件,并且 XlsxWriter 无法读取现有文件。我需要在我的应用程序中多次修改一个文件。

[更新]:看here。好像这个bug还没有修复?

以下代码可能对您的测试有所帮助。

#-*- coding: utf-8 -*-
import openpyxl

def create():
    wb = openpyxl.Workbook()
    ws = wb.worksheets[0]

    ws.cell('A1').value = 'Click Me'
    ws.cell('A1').hyperlink = 'http://www.google.com'

    wb.save('test1.xlsx')

def rewrite():
    wb = openpyxl.load_workbook('test1.xlsx')
    ws = wb.worksheets[0]

    wb.save('test2.xlsx')

if __name__ == '__main__':
    create()
    rewrite()

[2017-03-07 更新]:bug 已修复,问题不再存在。

【问题讨论】:

  • 不幸的是,openpyxl 是迄今为止编辑 Excel 文件的最佳 Python 模块。

标签: python excel hyperlink openpyxl


【解决方案1】:

尝试在 Excel 中使用HYPERLINK 函数。这会产生一个公式,而不是该单元格中的值,但从用户的角度来看,它很可能没有区别:

ws.cell('A1').value = '=HYPERLINK("http://www.google.com","Click Me")'

【讨论】:

    【解决方案2】:

    作为 Cedric 回答的补充,如果想直接使用 excel 内置的超链接功能,可以使用以下格式作为链接:

    '=HYPERLINK("{}", "{}")'.format(link, "Link Name")

    如果没有这种格式,文件在不需要修复的情况下无法为我打开,这会删除带有尝试的超链接的单元格值。

    例如ws.cell(row=1, column=1).value = '=HYPERLINK("{}", "{}")'.format(link, "Link Name")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      相关资源
      最近更新 更多