web-dev-qa-db-ja.com

一部のセルにハイパーリンクを追加するopenpyxl

要約結果を含むExcelを生成する必要があります。結果はリストに含まれています。一部の要素は値と一部のリンクです。

適切な形式でExcelを生成できましたが、一部のセルにハイパーリンクが生成されませんでした

私の試み: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)

私の質問は、def summaryMCPで列を定義し、次にexcelMCPでリンクの形式で列を定義するときに、値がハイパーリンクであることを定義できますか?そして場合では、どのように?今のところ見つかりませんでした

13
gis20

Excelの組み込みハイパーリンク関数を直接使用する場合は、次を使用してリンクとしてフォーマットできます。

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

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

10
Phillip

これを試して :

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

私の試みでは、これはExcelがハイパーリンクを使用して設定する書式を追加しませんが、セルの内容はHYPERLINKタグを使用して取得するよりもExcelハイパーリンクセルに似ています。

7
Stephen Boston

これでうまくいきました。

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

これは私にとってはうまくいきます:

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