Power Query如何添加包含源文件名的自定义列?
在Power Query中添加源文件名作为自定义列的方法
完全可行,以下是针对不同导入场景的具体实现方式:
场景1:导入单个本地文件时添加文件名
如果是直接导入单个本地文件,需要先获取文件路径信息,再提取文件名或直接使用完整路径:
- 先在查询开头定义文件路径变量,后续自定义列直接引用该变量:
let FilePath = "C:\你的文件路径\目标文件名.xlsx", Source = Excel.Workbook(File.Contents(FilePath), null, true), // 这里替换为你已有的步骤(比如Changed Type1) #"Changed Type1" = Table.TransformColumnTypes(Source, ...), // 添加自定义列,使用完整路径 #"Added Custom" = Table.AddColumn(#"Changed Type1", "Filename", each Text.From(FilePath)) in #"Added Custom"
如果只需要提取文件名(不含路径),可以用Text.AfterDelimiter函数从路径中截取:
#"Added Custom" = Table.AddColumn(#"Changed Type1", "Filename", each Text.AfterDelimiter(FilePath, "\", {0, RelativePosition.FromEnd}))
场景2:从文件夹批量导入文件时添加文件名
如果是通过「从文件夹」功能批量导入多个文件,Power Query会自动生成包含文件信息的列,直接复用即可:
- 导入文件夹后,默认会生成
Name(纯文件名)、Full Path(完整路径)等列 - 展开文件内容后,可直接在自定义列中引用这些字段:
#"Added Custom" = Table.AddColumn(#"Changed Type1", "Filename", each [Name])
若需要从完整路径提取文件名,同样使用Text.AfterDelimiter:
#"Added Custom" = Table.AddColumn(#"Changed Type1", "Filename", each Text.AfterDelimiter([Full Path], "\", {0, RelativePosition.FromEnd}))
补充说明
- 如果是导入Excel内部表格/区域的数据(无外部文件关联),则无法获取外部文件名,因为数据本身不绑定外部文件路径
Text.AfterDelimiter的第三个参数{0, RelativePosition.FromEnd}用于定位最后一个反斜杠,确保准确截取文件名
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

