如何创build超链接到同一工作簿中的其他Excel工作表

我正在使用Python的模块openpyxl,并试图创build一个超链接,将带我到同一个Excel工作簿中的不同的选项卡。 做类似下面的事情创build超链接; 然而,当我点击它时,它告诉我无法打开文件。

from openpyxl import Workbook wb = Workbook() first_sheet = wb.create_sheet(title='first') second_sheet = wb.create_sheet(title='second') first_sheet['A1'] = "hello" second_sheet['B2'] = "goodbye" link_from = first_sheet['A1'] link_to = second_sheet['B2'].value link_from.hyperlink = link_to wb.save("C:/somepath/workbook.xlsx") 

我假设问题在于'link_to'的值; 然而,我不知道需要改变什么,或者我将不得不写什么样的道路。

我正在使用Python 2.7.6和Excel 2013。

在openpyxl中支持超链接目前非常简单,主要限于读取现有文件中的链接。

我find了一个方法来做到这一点。

假设一个名为“ workbookEx.xlsx ”的.xlsx文件包含两个名为“ sheet1 ”和“ sheet2 ”的工作表,并且需要从“ 工作表1”的一个单元格( A1 )到“工作表2”的另一个单元格( E5 )的链接:

 from openpyxl import load_workbook wb = load_workbook(workbookEx.xlsx) ws = wb.get_sheet_by_name("sheet1") link = "workbookEx.xlsx#sheet2!E5" ws.cell(row=1, column=1).hyperlink = (link) 

秘密是“#”,Excel不显示你,但它使用相同的文件链接的“#”,我只需要复制在Excel中创build一个相同的文件链接到Word文档,看到“#”。

也可以省略文件名,也就是说可以使用: _cell.hyperlink = '#sheetName!A1'来连接一张活动文档。

要命名刚刚创build的链接,只需将单元格值设置为所需的string: _cell.value = 'Linkname'

另一个工作解决scheme是使用functionHYPERLINK内置的Excel 。 它不会使单元格中的值变成超链接,而是将单元格放在单元格中,并像超链接一样工作。

 ws.cell('A1').value = '=HYPERLINK("#sheet2!E5","Link name")' 

作为Marcus.Luck的答案的补充,如果想直接使用内置的超链接函数,你可能需要格式化为:

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

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

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