Power Query提取文件扩展名报错,需判断CSV/XLSX格式求助
问题解决:Power Query提取文件扩展名并验证
错误原因分析
你遇到的错误是因为在let语句的变量赋值中误用了记录字段的简写语法:
[FilePath]或_[FilePath]是Power Query中针对记录对象字段的引用方式,仅在each表达式(比如处理表格行数据时)有效。- 而你定义的
FilePath是let块中的普通变量,直接使用变量名即可,不需要加方括号或下划线前缀。
修正后的完整代码(含扩展名验证)
下面的代码会先提取文件扩展名,验证是否为CSV或XLSX,如果不符合则抛出提示,符合则正常导入文件:
let // 获取单元格中存储的文件路径 FilePath = Excel.CurrentWorkbook(){[Name="fp"]}[Content]{0}[TheFilePath], // 提取文件扩展名(转为大写,避免大小写问题) FileExt = Text.Upper(Text.AfterDelimiter(FilePath, ".", {0, RelativePosition.FromEnd})), // 验证扩展名是否合法 ValidateExt = if List.Contains({"CSV", "XLSX"}, FileExt) then FilePath else error "文件扩展名必须为CSV或XLSX", // 导入文件 Source = Excel.Workbook(File.Contents(ValidateExt)) in Source
代码说明
- 提取扩展名:使用
Text.AfterDelimiter从文件路径末尾提取最后一个.之后的内容,并用Text.Upper统一转为大写,避免因大小写(比如.csv或.Csv)导致验证失败。 - 扩展名验证:用
List.Contains判断提取的扩展名是否在允许的列表中,若不符合则抛出自定义错误提示;若符合则继续执行文件导入。 - 变量引用:直接使用
FilePath变量名,而非错误的[FilePath]或_[FilePath],符合Power Query的变量引用规则。
内容的提问来源于stack exchange,提问作者Einarr
相关产品推荐
相关产品推荐

