excel Python -阅读超链接信息?

wqsoz72f  于 2023-03-24  发布在  Python
关注(0)|答案(1)|浏览(120)

我尝试使用以下代码从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...)?

qni6mghb

qni6mghb1#

您需要更深入地挖掘以从API获取Address和SubAddress。
如果超链接是内部的,就像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.Hyperlinks:
    print(f"Addr: {lnk.Address}")
    print(f"Subaddr: {lnk.SubAddress}\n")

print(f"I18: {ws1['I18'].value}")
for lnk in ws1['I18'].api.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:

相关问题