Python修改已有文件时,openpyxl会丢失超链接

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

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

任何人都可以帮助解决这个问题

还是比openpyxl有更好的select?

我知道xlrd / xlwt和XlsxWriter,但是xlwt不支持.xlsx文件,并且XlsxWriter不能读取已存在的文件。 我需要在应用程序中多次修改文件。

[更新]:看这里 。 看来这是错误尚未解决?

以下代码可能对您的testing有帮助。

#-*- 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已更新]: 错误已修复,问题不再存在。

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

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

作为塞德里克答案的附录,如果想要直接使用内置的超链接function,可以使用以下格式作为链接:

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

如果没有这种格式,该文件不会打开我不需要修复,这将删除与企图超链接的单元格值。

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