在Power Automate中能否用XPath提取DOCX表格单元格完整内容?
按表格单元格合并DOCX文本的解决方案
原XPath表达式会提取所有独立的w:t节点文本,导致同一表格单元格内的内容被拆分成多个数组元素。要实现按单元格合并文本,可通过以下两种方式调整:
方法1:用「Apply to each」循环处理
- 添加一个Compose动作,输入表达式获取所有表格单元格节点:
xpath(xml(outputs('Get_file_content')?['body']), '//*[name()=''w:tc'']')
- 添加「Apply to each」动作,选择上述Compose的输出作为循环对象
- 在循环内新增一个Compose动作,输入表达式合并当前单元格内的所有
w:t文本:
join(xpath(item(), './/*[name()=''w:t'']/text()'), '')
- 循环结束后,所有合并后的单元格文本会自动整理为符合需求的数组。
方法2:用「Select」动作简化流程
如果不想用循环,可通过「Select」动作一次性完成处理:
- 添加「Select」动作,在「From」输入框中填入:
xpath(xml(outputs('Get_file_content')?['body']), '//*[name()=''w:tc'']')
- 在「Map」区域,设置键值对的「Value」为:
join(xpath(item(), './/*[name()=''w:t'']/text()'), '')
- 「Select」动作的输出即为每个单元格合并后的文本数组。
原理说明
DOCX的表格单元格对应XML中的w:tc节点,同一单元格内的拆分文本都属于该节点的子节点。通过先定位到w:tc节点,再提取其下所有w:t文本并拼接,就能得到完整的单元格内容,避免了原表达式跨容器提取文本的问题。
内容的提问来源于stack exchange,提问作者DRVR
相关产品推荐
相关产品推荐

