【问题标题】:Extract hyperlink URL from excel sheet with python使用python从excel表中提取超链接URL
【发布时间】:2021-02-01 03:16:25
【问题描述】:

如何使用 python 提取 Excel 工作表单元格中超链接的 URL? 我曾尝试过公开使用 Pandas,但它们没有用......

下面是我目前在openpyxl中写的代码:


    from openpyxl import load_workbook as load
    from openpyxl import Workbook

    file = 'tableCopy.xlsx'
    zipCode = 2110
    codeCol = 5
    linkCol = 6
    
    result = Workbook()
    rws = result.active
    
    wb1 = load(file)
    sheets = [wb1.sheetnames[x] for x in range(len(wb1.sheetnames) - 1)]
    
    for sheet in sheets:
        ws = wb1[sheet]

        for rowNumber in range(1, ws.max_row + 1):
        if ws.cell(row=rowNumber, column=codeCol).value == zipCode:
            rws.append((cell.value for cell in ws[rowNumber]))

            url = ws.cell(column=linkCol, row=rowNumber) # this is what i am using to get the url
            text = ws.cell(column=linkCol + 1, row=rowNumber)
            rws.cell(row=rowNumber, column=linkCol).value = '=HYPERLINK("' + str(url.value) + '","' + str(text.value) + '")'

    result.save(f'code{zipCode}.xlsx')

file 是文件名

zipCode 是我要过滤的值

codeCol 是邮政编码的列

linkCol 是带有超链接的列

rws 是一个新工作表(result 工作簿的一部分),它将存储过滤后的数据

我从这里的第二个答案中获得了 urltext 的代码:Pandas read_excel with Hyperlink

我暂时放弃了text,因为它只显示下一列的文本

这是我打印出 url 变量时得到的示例:=IF(COUNTBLANK(B107:D107)>0,"",HYPERLINK(CONCATENATE(Setup!$B$5,SUBSTITUTE(SUBSTITUTE(CONCATENATE(B107,"+",C107,"+",D107,"+",E107)," ","+"),"/","%2F")),"Google Map")) 不是我希望的 URL,它是指向谷歌地图的链接。

【问题讨论】:

标签: python python-3.x excel excel-formula hyperlink


【解决方案1】:

这里使用openpyxl 模块。首先加载工作簿(例如第一张工作表):

import openpyxl

wb = openpyxl.load_workbook('FILEPATH')
ws = wb['Sheet1']

然后您可以使用单元格的.hyperlink.target。将它放在 try..except 块中,因为如果单元格没有超链接,那么它将失败。

【讨论】:

  • 由于某种原因,即使单元格有超链接,它对我来说也失败了......我得到了AttributeError: 'NoneType' object has no attribute 'target'
猜你喜欢
  • 2015-11-20
  • 2016-08-26
  • 1970-01-01
  • 2020-10-28
  • 2011-08-04
  • 2022-11-22
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
相关资源
最近更新 更多