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

use*_*231 7 python excel hyperlink openpyxl

我正在使用模块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")
Run Code Online (Sandbox Code Playgroud)

我假设问题在于'link_to'的价值; 但是,我不知道需要改变什么或者我必须编写什么样的路径.

我正在使用Python 2.7.6和Excel 2013.

lom*_*san 11

我找到了办法.

假设一个名为' 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)
Run Code Online (Sandbox Code Playgroud)

秘密是"#",Excel没有显示你,但它使用'#'作为相同的文件链接,我只需要将在Excel中创建的相同文件链接复制到Word文档中以查看'#'.

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

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

  • 如果工作表名称包含空格,则在没有引号的情况下将无法工作*。例如: `cell.hyperlink = '#\'我的工作表名称\'!E5'` (* 我只尝试过单引号,它们有效) (4认同)
  • 干得好!如果您只是指在包含超链接的单元格中看到的文本,只需添加: ws.cell(row=1, column=1).value = "text you want" (2认同)

Cha*_*ark 2

openpyxl 中对超链接的支持目前还非常初级,并且很大程度上仅限于读取现有文件中的链接。