带XSD架构的XML导入Power BI/Excel 2016失败,求解决方法
解决XML导入Power BI/Excel 2016的架构忽略与格式问题
我之前处理过类似的XML导入难题,结合微软已经确认的这个Bug,给你几个实用的解决办法,帮你顺利把数据导入Power BI或者Excel 2016:
方法1:手动在Power Query中调整数据类型
Power BI和Excel 2016都是通过Power Query来处理XML导入的,虽然它会忽略XSD架构,但我们可以手动强制设置列类型:
- 导入XML后,点击编辑查询进入Power Query编辑器
- 选中需要调整的列(比如数字格式的列),点击顶部的数据类型下拉菜单,选择对应的类型(比如
整数或小数) - 注意你的西班牙语区域设置:西班牙语中小数点是逗号,千分位是句号,设置类型时可以选择使用区域设置的小数,确保格式识别正确
方法2:用Power Query脚本强制读取XSD架构
可以通过M语言脚本手动调用XSD架构来映射数据,避免自动识别的错误。示例代码如下:
let // 加载XML源(在线链接用Web.Contents,本地文件用File.Contents) Source = Xml.Document(Web.Contents("https://resourcescrono.s3-eu-west-1.amazonaws.com/demo-biblio.xml")), // 读取XSD架构 Schema = Xml.Schema(Source), // 提取数据表格 DataTable = Table.FromRecords(Source{0}[Table][Rows][Row]), // 根据XSD定义手动指定列类型(替换成你的实际列名和类型) SetColumnTypes = Table.TransformColumnTypes(DataTable, { {"ID", Int64.Type}, {"Titulo", type text}, {"Precio", Currency.Type} }) in SetColumnTypes
- 把代码中的列名和类型替换成你XML里的实际内容
- 在Power Query编辑器中点击高级编辑器,替换默认代码即可
方法3:先转成CSV再导入(适合快速解决)
既然旧版Excel能正常识别XSD架构,我们可以借这个中转一下:
- 用Excel 2003(或能正常导入的旧版本)打开XML文件
- 把文件另存为CSV格式,注意选择西班牙语区域的分隔符(通常是分号
;) - 再将CSV文件导入Power BI/Excel 2016,此时系统能正确识别数字格式
补充:微软已经确认这是一个官方Bug,Excel和Power BI应该遵循XSD架构来识别数据类型,但目前还没有修复,所以上述临时方案是最靠谱的选择。
内容的提问来源于stack exchange,提问作者Pau




