openpyxl:从excel超链接openpyxl Windows环境返回绝对路径

问题描述

我有一个Excel文件,并使用ctrl和k添加了超链接。我想最终检查链接是否存在,但是目前,我需要获取文件绝对路径,因为文件的位置经常会更改。

这会导致excel文件中的超链接,例如“ file.pdf”或“ ../../ file.pdf”

使用Openpyxl,我可以获取链接目标:

import openpyxl
wb = openpyxl.load_workbook(r'C:\sample\sample.xlsx')
ws = wb['Index']

for row in ws.iter_rows():
    try:
        print( print(row[4].hyperlink.target))
        p = Path(row[4].hyperlink.target).resolve() # does not resolve into "C:\...."
        print(str(p))
    except:
        pass

如何从超链接获取绝对路径

解决方法

用abspath修复了它。

import openpyxl
from os.path import abspath

wb = openpyxl.load_workbook(r'C:\sample\sample.xlsx')
ws = wb['Index']

for row in ws.iter_rows():
    try:
        print( print(row[4].hyperlink.target))
        p = abspath(row[4].hyperlink.target) #"C:\folder\link.pdf"
        print(p)
    except:
        pass