Nuestro equipo especializado pasados algunos días de investigación y de juntar de información, dimos con la respuesta, nuestro deseo es que te sea de utilidad para tu proyecto.
Solución:
Encontré una manera de hacerlo.
Asumiendo un archivo .xlsx llamado ‘libroEx.xlsx‘ con dos hojas llamadas ‘hoja1‘ y ‘hoja2‘ y necesita un enlace de una celda (A1) de El ‘hoja1‘ a otra celda (E5) de El ‘hoja2‘:
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)
El secreto era el “#”, Excel no lo muestra, pero usa el ‘#’ para los mismos enlaces de archivos, solo tuve que copiar un mismo enlace de archivo creado en Excel a un documento de Word para ver el ‘#’.
También es posible omitir el nombre del archivo, es decir, vincular contra una hoja del documento activo simplemente use: _cell.hyperlink = '#sheetName!A1'
.
Para nombrar el enlace que acaba de crear, simplemente establezca el valor de la celda en el deseado string: _cell.value = 'Linkname'
.
Como un apéndice a la respuesta de Marcus.Luck, si desea utilizar la función de hipervínculo integrada de Excel directamente, es posible que deba formatear como:
'=HYPERLINK("", "")'.format(link, "Link Name")
Sin este formato, el archivo no se abría sin necesidad de reparación, lo que eliminaba los valores de las celdas al hacer clic en los enlaces.
p.ej ws.cell(row=1, column=1).value = '=HYPERLINK("", "")'.format(link, "Link Name")
Otra solución de trabajo es usar la función HIPERVÍNCULO incorporada de Excel. No convierte el valor de la celda en un hipervínculo, sino que coloca una fórmula en la celda y actúa como un hipervínculo.
ws.cell('A1').value = '=HYPERLINK("#sheet2!E5","Link name")'
valoraciones y reseñas
Tienes la posibilidad difundir este tutorial si si solucionó tu problema.