如何创建指向同一工作簿中的其他Excel工作表的超链接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建指向同一工作簿中的其他Excel工作表的超链接相关的知识,希望对你有一定的参考价值。

我正在使用模块openpyxl for Python,我正在尝试创建一个超链接,将我带到同一个Excel工作簿中的不同选项卡。执行类似于以下操作的操作会创建超链接;但是,当我点击它时,它告诉我它无法打开文件。

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中的超链接的支持目前非常简陋,主要限于阅读现有文件中的链接。

另一答案

我找到了办法。

假设一个名为'workbookEx.xlsx'的.xlsx文件有两个名为'sheet1'和'sheet2'的表,需要从'sheet1'的一个单元格(A1)到'sheet2'的另一个单元格(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中创建的相同文件链接复制到Word文档中以查看'#'。

也可以省略文件名,即链接到活动文档的工作表只需使用:_cell.hyperlink = '#sheetName!A1'

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

另一答案

另一个有效的解决方案是使用内置功能HYPERLINK的excel。它不会将单元格中的值转换为超链接,而是将公式放在单元格中并充当超链接。

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

作为Marcus.Luck的答案的附录,如果想直接使用Excel的内置超链接功能,您可能需要格式化为:

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

没有这种格式化,文件没有为我打开而不需要修复,这在单击链接时删除了单元格值。

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

以上是关于如何创建指向同一工作簿中的其他Excel工作表的超链接的主要内容,如果未能解决你的问题,请参考以下文章

从同一个 Excel 工作簿中的另一个工作表中检索单元格值

excel跨工作簿引用同一位置单元格数据?

在新工作簿中复制 Excel 主题颜色

将同一工作簿中的多个 Excel 工作表复合到一张工作表中

如何将一个 Excel 工作簿中的多个工作表合并成一个工作表?

在 Excel 中,如何调用存储在另一个工作簿中的用户定义函数而无需打开另一个工作簿?