Power Query M语言:不解压直接汇总 Zip 文件中的 CSV 数据
Power Query M语言:不解压直接汇总 Zip 文件中的 CSV 数据
使用 Power Query 的 M 语言,可以实现直接从 Zip 文件中读取多个 CSV 文件,并将其汇总,无需解压文件,简化数据处理流程。
实现步骤
- 在 Power Query 中选择“从其他源” -> “空白查询”。
- 在弹出的对话框中,输入以下代码:
let
//定义zip文件路径
zipPath = 'C:\example.zip',
//建立Zip二进制文件连接
binaryContent = Binary.Buffer(File.Contents(zipPath)),
archive = Zip.Contents(binaryContent),
//筛选csv文件
csvFiles = Table.SelectRows(archive, each Text.EndsWith([Name], '.csv')),
//声明一个空表格
resultTable = #table(),
//循环处理每个csv文件
loopCsv = List.ForEach(csvFiles[Content], each
let
//转换csv文件的二进制内容为文本格式
csvText = Text.FromBinary(_),
//将csv文本转换为表格
csvTable = Csv.Document(csvText),
//将csv表格添加到结果表格中
updatedResultTable = Table.Combine({resultTable, csvTable})
in
resultTable = updatedResultTable
)
in
resultTable
- 将代码中的 'C:\example.zip' 修改为你要使用的 zip 文件的路径。
- 点击“关闭和加载”按钮,将数据加载到 Power Query 中。
- 在 Power Query 中进行必要的数据清洗和转换,然后将数据导出或者重新加载到 Excel 中。
代码说明
zipPath:定义 zip 文件的路径。binaryContent:读取 zip 文件的二进制内容。archive:解析 zip 文件内容。csvFiles:筛选出 zip 文件中所有以 .csv 结尾的文件。resultTable:声明一个空表格,用于存储最终的汇总结果。loopCsv:循环遍历每个 csv 文件,将其转换为表格并添加到resultTable中。
注意事项
- 代码中的
zipPath需要替换为你的实际 zip 文件路径。 - 确保你的 zip 文件中包含多个 CSV 文件。
- 如果你需要对最终结果进行进一步的处理,可以在代码中添加额外的操作。
希望这个方法对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/lhTr 著作权归作者所有。请勿转载和采集!