我尝试使用以下代码从 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...)?
您需要更深入地挖掘才能从 api 获取地址和子地址。
如果超链接是内部的,就像 H18 一样,那么地址将为空白,子地址将仅包含内部详细信息:工作表名称和单元格。
所以H18只会返回;
DeadLogic!A1
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: