在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把所有文件处理后的小表合并成一个完整的大表。 - 日期提取(可选):如果需要把文件名里的日期字符串转为可计算的日期格式,保留这一步即可,后续可直接用该列进行排序、筛选等操作。
注意事项
- 替换代码中的
file path here为你的实际文件夹路径。 - 如果.pri文件存在空行,可以在生成
LineTable后添加空行筛选步骤:
然后把后续#"Filtered Empty Rows" = Table.SelectRows(LineTable, each not List.IsEmpty(List.RemoveNulls(_))),AddFileName中的LineTable替换为#"Filtered Empty Rows"即可。
内容的提问来源于stack exchange,提问作者ShankRides
相关产品推荐
相关产品推荐

