如何用Python提取XLSX表格中嵌入图片的关联URL?
可以用Python实现,提供两种可行方案:
方案一:使用win32com操作Excel对象模型(Windows环境)
Excel中图片关联的超链接存储在工作表的Shape对象中,通过pywin32库可直接访问Excel的COM对象提取:
- 先安装依赖:
pip install pywin32
- 示例代码:
import win32com.client as win32 from win32com.client import constants excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = False # 后台运行不打开Excel窗口 workbook = excel.Workbooks.Open(r'你的Excel文件路径.xlsx') for sheet in workbook.Sheets: print(f"工作表:{sheet.Name}") for shape in sheet.Shapes: # 判断当前Shape是否为图片 if shape.Type == constants.msoPicture: if shape.Hyperlink is not None: print(f"图片名称:{shape.Name},关联URL:{shape.Hyperlink.Address}") else: print(f"图片名称:{shape.Name},无关联URL") workbook.Close(SaveChanges=False) excel.Quit()
方案二:直接解析Excel的XML结构(跨平台)
.xlsx本质是压缩包,内部的绘图XML文件(路径通常为xl/drawings/drawingN.xml)存储了图片与超链接的关联关系,可通过解压+XML解析实现:
- 先安装依赖:
pip install lxml
- 示例代码:
import zipfile from lxml import etree with zipfile.ZipFile('你的Excel文件路径.xlsx', 'r') as zf: # 遍历所有绘图XML文件 for filename in zf.namelist(): if filename.startswith('xl/drawings/') and filename.endswith('.xml'): with zf.open(filename) as f: tree = etree.fromstring(f.read()) # 定义XML命名空间 ns = { 'xdr': 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', 'a': 'http://schemas.openxmlformats.org/drawingml/2006/main' } # 查找所有带超链接的图片形状 for pic in tree.xpath('//xdr:pic', namespaces=ns): hyperlink = pic.xpath('.//xdr:hyperlink/@r:id', namespaces={**ns, 'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'}) if hyperlink: # 从关系文件中获取实际URL rel_filename = f"xl/drawings/_rels/{filename.split('/')[-1]}.rels" if rel_filename in zf.namelist(): with zf.open(rel_filename) as rel_f: rel_tree = etree.fromstring(rel_f.read()) url = rel_tree.xpath(f"//r:Relationship[@Id='{hyperlink[0]}']/@Target", namespaces={'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'}) if url: print(f"图片关联URL:{url[0]}")
注意:方案二需要处理Excel内部的关系文件(.rels),不同Excel文件的绘图文件命名可能有差异(如drawing1.xml、drawing2.xml),需根据实际情况调整。
内容的提问来源于stack exchange,提问作者Sharp Dev
相关产品推荐
相关产品推荐

