Excel里的Power Query是一项非常实用的数据获取与转换功能,它让没有编程基础的用户也能轻松把各种外部数据整理成规范的表格。对于XML这种以标签描述层级关系的数据格式,Power Query提供了可视化的导入通道,不必再去写复杂的解析脚本。

一、Power Query导入XML的整体思路
XML本质上是一棵节点树,根元素下包含若干子元素,子元素自身还可以继续嵌套并且携带属性。Excel希望拿到的是行与列的平面结构,因此Power Query在导入时会把重复出现的同级节点识别为记录,把它们的子节点或属性映射为字段。理解这一点,我们就能在后续步骤中判断哪些层级该展开、哪些该忽略。
从操作路径看,Power Query并不要求你提前把XML改成其他格式。它直接读取文件中的声明与命名空间,在后台使用基于.NET的XML解析器把文档装载进内存,再以表格预览的形式呈现。整个过程对用户透明,你只需要关注导航器里的节点名称和展开按钮即可。
二、具体导入步骤演示
1. 从文件获取数据
打开Excel,点击顶部菜单的“数据”选项卡,在“获取和转换数据”区域选择“从文件”下拉中的“从XML”。此时会弹出系统文件选择框,定位到你的XML文件并确认。Excel会启动Power Query编辑器,并弹出导航器窗口列出XML里的节点结构。
导航器左侧是XML的层级树,右侧是选中节点对应的数据预览。通常我们会勾选最外层的列表节点,然后点击“转换数据”进入编辑界面,而不是“加载”,因为多数情况下还需要清洗。
2. 展开记录与列表
进入编辑器后,很多列会显示为“Record”或“List”字样,这表示该字段本身又是一层结构。点击列右侧的双向箭头图标,就能把子字段展开为独立列。如果子节点是重复的多条数据,Power Query会自动按父行复制并平铺,形成一对多的表。
例如下面的XML描述了一组图书信息:
<library>
<book id="1">
<title>XML基础</title>
<author>张三</author>
<price>39.00</price>
</book>
<book id="2">
<title>Power Query实战</title>
<author>李四</author>
<price>59.00</price>
</book>
</library>
导入时先展开book列表,再展开每本书的title、author、price,同时把id属性提升为列,就能得到两行三字段的干净表格。
3. 类型设置与加载
Power Query默认把数字也识别为文本,需要在“转换”菜单里把price列改为小数类型,避免后续求和出错。确认无误后点击“关闭并加载”,数据就会落到Excel工作表中,并在右侧查询窗格生成可重复使用的查询。
日后XML文件内容更新,只需右键查询选择“刷新”,所有展开与类型步骤会自动重跑,这就是相比手工复制最核心的优势。
三、常见误区与处理办法
命名空间导致的空白
有些XML带有类似xmlns="http://ipipp.com/ns"的命名空间声明,初学者展开后可能发现字段全空。这是因为Power Query严格区分带空间的元素名。解决办法是在高级编辑器里检查Source函数的Encoding与Options,或使用“删除其他列”后仅保留需要的带前缀字段。
如果实在难以处理,可以先用记事本把命名空间批量替换为空再导入,但这会破坏原文件语义,仅建议临时查看用。
重复节点被合并
当某一父节点下只有一个子节点,而另一些父节点下有多个,展开时可能出现行数不符预期。此时应使用“添加自定义列”配合Table.ExpandTableColumn函数显式控制展开逻辑,而不是依赖默认箭头。
// 显式展开子表列
= Table.ExpandTableColumn( 上一步, "book", {"title", "author", "price"}, {"标题", "作者", "价格"})
上述代码把子表book中的三个字段展开,并顺手改成了中文列名,比界面点选更可控。
四、用M语言加深理解
Power Query背后是一门叫M的公式语言。每一次界面操作都会生成对应代码,点击“高级编辑器”就能看到。认识基础语法有助于排查导入异常。
let
Source = Xml.Tables(File.Contents("C:datasample.xml")),
Library = Source{0}[library],
Books = Library[book]
in
Books
这段M代码先读文件为XML表,再取根下的library表,最后抽出book列表。它等价于前面界面里的点击路径。当你遇到复杂嵌套,手写少量M比疯狂点箭头更高效。
总结来说,Excel Power Query导入XML数据并不神秘,把握节点到字段的映射原则,配合展开与类型转换,新手也能在几分钟内完成原本繁琐的整理工作。把重复任务交给查询刷新,才能把精力放在真正的数据分析上。
Power_QueryXML导入Excel数据处理修改时间:2026-08-01 04:21:28