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

如何用Python-Docx提取Word表格单元格内的超链接文本?

解决Word表格中超链接文本提取问题

在使用python-docx提取带超链接的单元格内容时,直接读取run.text或par.text无法获取超链接文本——因为超链接的内容存储在Word底层OOXML结构的专门节点中。以下是修正后的提取代码:

def Populate(self, Keyword, row):
    match Keyword:
        case 'Status':
            self.Status = row.cells[1].text
            print(self.Status)

        case 'Project':
            cell = row.cells[1]
            self.Project = ""
            # 遍历单元格内所有段落
            for par in cell.paragraphs:
                # 通过XPath定位段落内的超链接节点
                for hyperlink in par._element.xpath('.//w:hyperlink'):
                    # 提取超链接包含的所有文本内容
                    for text_node in hyperlink.xpath('.//w:t'):
                        self.Project += text_node.text
                # 补充段落内的普通文本(非超链接部分)
                self.Project += par.text
            print(self.Project)

核心说明:

  • python-docx基于Word的XML格式(OOXML)实现,超链接对应XML中的<w:hyperlink>节点,需要用XPath语法定位提取。
  • 先提取超链接内的文本,再补充段落普通文本,避免遗漏单元格内的所有内容。
  • 初始化self.Project = "",防止多次调用时累加旧数据。

如果还需要提取超链接的URL地址,可以通过以下方法获取:

def get_hyperlink_url(hyperlink, document):
    rid = hyperlink.get('r:id')
    if rid and rid in document.part.related_parts:
        return document.part.related_parts[rid].target_ref
    return None

# 在Project分支中调用示例:
# url = get_hyperlink_url(hyperlink, self.document)
# print(f"超链接地址: {url}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:34:59