Python - 读取超链接信息?

问题描述 投票:0回答:1

我尝试使用以下代码从 excel 表中读取超链接信息:

import os
import sys
import xlwings as xw

path = os.path.abspath(os.path.dirname(sys.argv[0]))  
fn = os.path.join(path, "inp.xlsx")    
wb = xw.Book (fn)
ws1 = wb.sheets["MainOverview"] 
val =  ws1["H18"].value
inpLink = ws1["H18"].hyperlink
print(f"{val}: {inpLink}")
val =  ws1["I18"].value
inpLink = ws1["I18"].hyperlink
print(f"{val}: {inpLink}")

在单元格 H18 中,有一个指向文档中另一个位置/工作表的链接 - 请参阅附加的信息,当在单元格中提供链接时它显示的信息:

在 I18 单元格中,我有一个指向网站的链接 - 附上吸尘器信息:

但是当我运行程序时,我只得到这个输出:

View Findings: 
Google: https://www.google.com/

所以我只得到网站链接的链接信息,而不是来自单元格 H18 的文件链接信息。

如何从单元格 H18 获取完整文件链接 (file:///C:\DEV...)?

python excel xlwings
1个回答
0
投票

您需要更深入地挖掘才能从 api 获取地址和子地址。
如果超链接是内部的,就像 H18 一样,那么地址将为空白,子地址将仅包含内部详细信息:工作表名称和单元格。
所以H18只会返回;

DeadLogic!A1

链接的路径显然是您打开的工作簿的路径。

I18 作为外部链接应该只在地址字段中返回一个值,即;
https://www.google.com/

...
ws1 = wb.sheets["MainOverview"] 

print(f"H18: {ws1['H18'].value}")
for lnk in ws1['H18'].api._inner.Hyperlinks:
    print(f"Addr: {lnk.Address}")
    print(f"Subaddr: {lnk.SubAddress}\n")

print(f"I18: {ws1['I18'].value}")
for lnk in ws1['I18'].api._inner.Hyperlinks:
    print(f"Addr: {lnk.Address}")
    print(f"Subaddr: {lnk.SubAddress}")

上面的代码示例将显示;
H18: View Findings
Addr: 
Subaddr: DeadLogic!A1

I18: Google
Addr: https://www.google.com/
Subaddr: 
© www.soinside.com 2019 - 2024. All rights reserved.