【问题标题】:adding hyperlinks in some cells openpyxl在某些单元格中添加超链接 openpyxl
【发布时间】:2016-12-28 21:27:59
【问题描述】:

我必须生成一个带有摘要结果的 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 中定义链接的格式时,我可以定义该值是超链接吗?万一,怎么办?暂时没找到

【问题讨论】:

  • 什么是Column?我看不懂这段代码。
  • 列是标题。它是 excel 工作表中的第一行。结果是值(一行)。 result[number] 是行中的每个单元格
  • 是的,但它不是一个 openpyxl 对象,所以你问的是未知数。

标签: python excel hyperlink openpyxl


【解决方案1】:

如果想直接使用Excel内置的超链接功能,可以使用以下格式作为链接:

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

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

【讨论】:

  • 这很有用,但是当我单击单元格或编辑它时,它不再是超链接,我变成了带有数据的文本=HYPERLINK("https://google.com", "Google")
  • 使用这种方法要小心... excel 无法处理公式 > 256 个字符,因此使用 HYPERLINK() 可能会截断长网址
【解决方案2】:

这对我有用:

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

【讨论】:

    【解决方案3】:

    试试这个:

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

    在我的尝试中,这不会添加 Excel 使用超链接放置的格式,但单元格内容更像 Excel 超链接单元格,而不是使用 HYPERLINK 标记。

    【讨论】:

    • 如果你想要格式,你需要添加正确的命名样式。
    【解决方案4】:

    这对我有用。

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

    【讨论】:

    • 这样值和 URL 将是相同的,但这就是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2014-04-05
    • 2018-10-20
    相关资源
    最近更新 更多