某些超链接无法使用 Openpyxl 打开

Some Hyperlinks not opening with Openpyxl

我有几百个包含数据和 hyperlink 的文件,当我意识到 Pandas 没有读取任何超级links.

然后我尝试使用 Openpyxl 读取输入 Excel 文件中的 hyperlinks 并使用 hyperlink 的文本在 excel 中写入一个新列希望 Pandas 可以读入我的数据框。

但是,我 运行 遇到了测试 openpyxl 代码的问题。它可以读写一些 hyperlink 但不能读写其他的。

我的示例文件有三行,如下所示:

我的实际数据有 hyperlinks,就像我在测试数据集中的“Google”一样。

另外两个 hyperlink 在我的文本数据中,我通过右键单击单元格并粘贴 link.

来插入

示例测试文件在这里:Text.xlsx

这是我为读取 hyperlink 并将其粘贴到新专栏中而编写的代码。它适用于前两行(印度和中国),但不适用于第三行 (Google)。很不幸,因为我所有的实际数据都是这种类型的。有人可以帮我解决吗?

import openpyxl 

wb = openpyxl.load_workbook('test.xlsx')
ws = wb.active

column_indices = [1]
max_col = ws.max_column

ws.cell(row=1,column = max_col+1).value = "Hyperlink Text"
for row in range(2,ws.max_row+1): 
    for col in column_indices:
        print(ws.cell(row, column=1).hyperlink.target)
        ws.cell(column=max_col+1,row=row).value = ws.cell(row, column=1).hyperlink.target


wb.save('test.xlsx')

您使用 HYPERLINK 函数(如 google.com)的单元格将不是超链接类型。您将需要使用 re so similar function 处理具有 HyperLink 功能的单元格。 这些值如下所示,

>>> ws.cell(2,1).value
'China'
>>> ws.cell(3,1).value
'India'
>>> ws.cell(4,1).value
'=HYPERLINK("www.google.com","google")'

处理超链接的建议代码:

val = ws.cell(row,column).value
if val.find("=HYPERLINK") >= 0 :
    hyplink = ws.cell(4,1).value  # Or use re module for more robust check

注意:似乎不需要第二个 for 循环来遍历列,因为您总是使用 column=1。