web-dev-qa-db-fra.com

ajout d'hyperliens dans certaines cellules openpyxl

Je dois générer un Excel avec des résultats résumés. Les résultats sont inclus dans une liste. Certains éléments sont des valeurs et des liens.

J'ai réussi à générer l'Excel avec le bon format mais pas à générer le lien hypertexte dans certaines cellules

Mon essai: depuis le classeur d'importation openpyxl

from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font, Fill
from openpyxl.cell import get_column_letter

def summaryMCP(self,result):

            c1=Column('Name',[result[0]])
            c2=Column('R2 check',[result[1]])
            c3=Column('Dir Diff.',[result[2]])

            c4=Column('CHI2 Sm-Sc',[result[3]])#Lets say this one is a hyperlink to one image png
            c5=Column('Rose Sm-Sc',[result[4]])

            s=Sheet("MCP main results", [c1,c2,c3,c4,c5]
            excelMCP([s],"/results.xlsx") 

def excelMCP(self, sheets,foname):
            wb = Workbook()
            ws = wb.active
            #from here format options (a bit long)

Ma question est: puis-je définir que la valeur est un lien hypertexte lors de la définition de la colonne dans def summaryMCP puis dans excelMCP le format du lien ?? Et au cas où, comment? Je n'ai pas pu le trouver jusqu'ici

13
gis20

Si vous souhaitez utiliser directement la fonction de lien hypertexte intégrée d'Excel, vous pouvez utiliser les éléments suivants pour formater en tant que lien:

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

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

10
Phillip

Essaye ça :

sheet['A1'].hyperlink = "http://stackoverflow.com"
sheet['A1'].value="StackOverflow"

Dans mon essai, cela n'ajoute pas la mise en forme qu'Excel met avec un lien hypertexte, mais le contenu de la cellule ressemble plus à la cellule de lien hypertexte Excel que je ne le fais avec la balise HYPERLINK.

7
Stephen Boston

Cela a fonctionné pour moi.

sheet.column_dimensions["A"].width = 30
sheet.cell(row=1, column=1).hyperlink = "http://www.espn.com"
book.save('links.xlsx')
3
sunil chayagol

Cela fonctionne pour moi:

wbook.active['A8'].hyperlink = "http://www.espn.com"
wbook.active['A8'].value = 'ESPN'
wbook.actibe['A8'].style = "Hyperlink"
3
JohnFromWV