使用openpyxl在excelsheet中创建内部链接

时间:2018-10-09 13:12:11

标签: python excel python-3.x openpyxl

我创建了一个包含约50个工作表的excelfile。所有信息都在第一个工作表的摘要中,但是有关详细信息,人们可以在工作表中查看源代码。

我认为在工作表中建立内部链接会很好(人们想知道为什么在2016年7月的工作表中销售下降了等等)。

但是,尽管我似乎能够创建网站的超链接,但我只想使其在此excel文件中工作。

这有可能吗?

3 个答案:

答案 0 :(得分:1)

这个问题更多地是关于Excel而不是Python或编程,但是您必须使用#,例如:

ws = wb['Sheet1']
cell = ws.cell('A1')
cell.value = '=HYPERLINK("#Sheet2!A2")'

您还可以为单元格提供人性化的显示文字:

cell.value = '=HYPERLINK("#Sheet2!A2", "click here")'

将在Sheet1的单元格A1中创建到Sheet2的单元格A2的链接。

两个单元格可能在同一张纸上,也可能不在同一张纸上。

#告诉Excel这是到本地位置的超链接,就像#被用作HTML的锚点。

答案 1 :(得分:0)

实际上,您可以添加本地超链接,但必须控制位置。规格说明了location属性:

  

目标内的位置。如果目标是工作簿(或此工作簿)   这应指工作表和单元格或定义的名称。也可以是   HTML锚(如果目标是HTML文件)。

我认为这可以通过将target设置为None并将ref设置为单元格引用来实现。

答案 2 :(得分:0)

这是一个可以直接用于在同一Excel中创建到工作表的超链接的功能:

def create_hyperlink(ws, at_cell, sheet_name, cell_ref='A1', display_name=None):
    if display_name is None:
        display_name = sheet_name
    to_location = "'{0}'!{1}".format(sheet_name, cell_ref)
    ws[at_cell].hyperlink = Hyperlink(display=display_name, ref=at_cell, location=to_location)
    ws[at_cell].value = display_name
    ws[at_cell].font = Font(u='single', color=colors.BLUE)

ws:将在其中创建链接的工作表
at_cell:将在其中创建链接的单元格位置。例如'A1'
sheet_name:将创建链接的工作表名称。例如'Sheet1'