从HTML提取表格转Excel并上传SharePoint遇空值问题求助
问题
需求:从HTML文件提取表格,转成Excel格式后上传至SharePoint。
问题:用以下Compose公式提取表格时返回空值:
slice(outputs('Compose'),indexOf(outputs('Compose'),'<table'),indexOf(outputs('Compose'),'</table'))
提供的目标HTML表格代码:
<table class="c50"> <tr class="c0"> <td valign="top" class="c1"><p class="c2"><span class="c3"><b>Header Id</b></span></p> </td> <td valign="top" class="c4"><p class="c5"><span class="c3"><b>Order Number</b></span></p> </td> <td valign="top" class="c6"><p class="c7"><span class="c3"><b>Receipt Date</b></span></p> </td> </tr> <tr class="c0"> <td valign="top" class="c46"><p class="c2"><span class="c47">29320250</span></p> </td> <td valign="top" class="c48"><p class="c5"><span class="c47">696157</span></p> </td> <td valign="top" class="c49"><p class="c7"><span class="c47">2023/08/24 00:00:00</span></p> </td> </table>
解决方案
公式错误原因
- 索引匹配失效:如果Power Automate已自动解码HTML实体(即实际内容是
<table>而非<table),indexOf找不到指定字符串会返回-1,直接导致slice输出空值。 - 切片范围不完整:
slice的第三个参数是结束位置,仅取</table的起始索引会漏掉结束标签本身,同时导致切片范围无效。
修正后的公式
情况1:HTML实体已解码(内容为<table>/</table>)
slice(outputs('Compose'),indexOf(outputs('Compose'),'<table>'),add(indexOf(outputs('Compose'),'</table>'),8))
情况2:HTML实体未解码(内容为<table/</table)
slice(outputs('Compose'),indexOf(outputs('Compose'),'<table'),add(indexOf(outputs('Compose'),'</table'),10))
注:add(...,8)是因为</table>长度为8,</table长度为10,确保完整包含结束标签。
后续流程(转Excel+上传SharePoint)
- 提取到完整表格HTML后,使用Power Automate内置的Convert HTML to Excel动作生成Excel文件。
- 用Create file或Upload file动作将Excel文件上传到目标SharePoint文档库。
内容的提问来源于stack exchange,提问作者Robby
相关产品推荐
相关产品推荐

