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

Excel 2016与365 Power Query文件加载兼容问题求助

解决Power Query在Excel 2016与365之间的文件读取兼容性问题

问题背景

用Excel 365制作的报表,通过Power Query读取命名单元格filePath指向的D365导出.xlsx文件,代码在365正常运行,但Excel 2016执行到Excel.Workbook(File.Contents(...))时触发:

[DataFormat.Error] The input couldn't be recognized as a valid Excel document.

已排除VBA问题,同版本设备问题可复现,需解决跨版本兼容性。

针对性解决方法

1. 修正命名单元格的取值方式

Excel 2016的Power Query对单个命名单元格的取值逻辑与365有差异,原代码通过[Content]{0}[Column1]取表内容的方式可能导致路径字符串格式异常。修改路径获取代码:

let
    Ścieżka = Excel.CurrentWorkbook(){[Name="filePath"]}[Value], // 直接取单元格值而非表内容
    Źródło = Excel.Workbook(File.Contents(Ścieżka), null, true),
    AxTable1_Table = Źródło{[Item="AxTable1",Kind="Table"]}[Data],
    ...

2. 处理路径字符串的编码兼容

Excel 2016的Power Query对非ASCII字符(如波兰语、中文等)路径的编码支持较弱,强制转换路径为UTF-8编码的文本:

let
    Ścieżka = Excel.CurrentWorkbook(){[Name="filePath"]}[Value],
    EncodedPath = Text.From(Ścieżka, "UTF-8"),
    Źródło = Excel.Workbook(File.Contents(EncodedPath), null, true),
    AxTable1_Table = Źródło{[Item="AxTable1",Kind="Table"]}[Data],
    ...

3. 调整Excel.Workbook的参数配置

Excel 2016的Power Query引擎对Excel.Workbook的第三个参数(UseHeaders)处理逻辑与365不一致,尝试省略该参数或显式指定表头行为:

// 省略第三个参数,使用默认配置
Źródło = Excel.Workbook(File.Contents(Ścieżka)),

// 或显式指定表头位置(根据实际数据调整)
Źródło = Excel.Workbook(File.Contents(Ścieżka), 1, true), // 第二个参数为表头所在行号

4. 验证源文件格式兼容性

D365导出的.xlsx可能使用了Excel 365专属格式,Excel 2016的Power Query无法识别。可:

  • 将D365导出的文件另存为**Excel 97-2003 工作簿(.xls)**后再读取
  • 改用Xml.Tables直接解析xlsx的底层XML结构(适合有XML处理经验的场景)

5. 更新Excel 2016的Power Query加载项

Excel 2016的Power Query作为独立加载项存在,旧版本可能存在格式兼容漏洞。检查并更新至微软发布的最新Power Query for Excel 2016版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:10:34