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

在Excel for Mac的Power Query M中为合并文件添加文件名列

Power Query M代码修改方案(合并.pri文件并保留文件名/日期)

你的原代码直接合并所有文件的二进制内容,导致无法关联每行对应的原文件信息。下面是修改后的代码,能让每一行数据都带上对应的文件名(或提取出的日期):

Source = Folder.Files("file path here"),
// 仅保留.pri格式文件,避免处理无关文件
#"Filtered Rows" = Table.SelectRows(Source, each Text.EndsWith([Name], ".pri")),
// 逐个处理每个文件,生成带文件名的表
#"Added Custom" = Table.AddColumn(#"Filtered Rows", "FileData", each 
    let
        // 将当前文件内容读取为文本行
        Lines = Lines.FromText(Text.FromBinary([Content])),
        // 按制表符拆分每行,转为表格
        LineTable = Table.FromList(Lines, Splitter.SplitTextByDelimiter("#(tab)"), null, null),
        // 给当前文件的所有行添加原文件名列
        AddFileName = Table.AddColumn(LineTable, "SourceFileName", each [Name])
    in
        AddFileName),
// 合并所有文件的表格
#"Combined Tables" = Table.Combine(#"Added Custom"[FileData]),
// 可选:从文件名提取日期(将03312022.pri转为日期格式)
#"Extracted Date" = Table.AddColumn(#"Combined Tables", "SourceDate", each 
    let
        DateStr = Text.BeforeDelimiter([SourceFileName], "."),
        SourceDate = Date.FromText(DateStr, [Format="MMddyyyy"])
    in
        SourceDate)
in
#"Extracted Date"

关键步骤说明

  • 筛选.pri文件:通过Table.SelectRows只保留目标格式文件,减少不必要的处理。
  • 逐个处理文件:不再直接合并二进制内容,而是对每个文件单独读取、转表,并添加文件名列,确保每行数据都能关联到原文件。
  • 合并表格:用Table.Combine把所有文件处理后的小表合并成一个完整的大表。
  • 日期提取(可选):如果需要把文件名里的日期字符串转为可计算的日期格式,保留这一步即可,后续可直接用该列进行排序、筛选等操作。

注意事项

  1. 替换代码中的file path here为你的实际文件夹路径。
  2. 如果.pri文件存在空行,可以在生成LineTable后添加空行筛选步骤:
    #"Filtered Empty Rows" = Table.SelectRows(LineTable, each not List.IsEmpty(List.RemoveNulls(_))),
    
    然后把后续AddFileName中的LineTable替换为#"Filtered Empty Rows"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 01:27:34