You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用xlwings读取Excel文档内超链接的完整file路径?

解决xlwings读取Excel内部超链接完整路径的问题

你遇到的问题是因为xlwings的range.hyperlink属性仅支持读取外部网页类超链接,对于指向文档内部的超链接,需要通过调用Excel原生对象模型的Hyperlinks集合来获取完整路径。

修改后的代码

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"] 

# 处理内部超链接单元格H18
val = ws1["H18"].value
inp_link = ""
hyperlinks = ws1.range("H18").api.Hyperlinks
if hyperlinks.Count > 0:
    # 获取单元格内的第一个超链接(通常单元格仅含一个超链接)
    link = hyperlinks(1)
    # 将Windows路径的反斜杠转为正斜杠,组合成file://格式的完整路径
    workbook_path = link.Address.replace("\\", "/")
    full_link = f"file:///{workbook_path}#{link.SubAddress}"
    inp_link = full_link

print(f"{val}: {inp_link}")

# 处理网页超链接单元格I18
val = ws1["I18"].value
inp_link = ws1["I18"].hyperlink
print(f"{val}: {inp_link}")

关键说明

  • ws1.range("H18").api.Hyperlinks:通过xlwings的api属性直接调用Excel原生对象模型,获取单元格的超链接集合。
  • link.Address:返回超链接指向的工作簿完整本地路径(如C:\DEV\...\inp.xlsx)。
  • link.SubAddress:返回文档内部的定位信息(如Sheet2!A1,即目标工作表和单元格位置)。
  • 最终组合出的file:///开头路径,和鼠标悬停时显示的格式完全一致。

内容的提问来源于stack exchange,提问作者Rapid1898

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:35:19