如何利用PowerQuery合并文件下的文件

2024年11月22日 14:18
有1个网友回答
网友(1):

很多时候,我们会有这样的需求:同一个文件夹下有很多文本文件,每个文本文件的内容结构大致相同,而且文件的数量会随时增加。我们需要把该文件夹下 的所有文本文件中的内容合并到一个Excel工作表中,并且,当文件夹中有新的文本文件增加时,只要刷新工作表,即可得到最新数据。 在过去,这个要求可能要用VBA或者其他编程工具来完成,然而,有Power Query,解决这类问题只是分分钟的事儿。 假设某个文件夹下,有这样的3个文本文件(部门1,部门2,部门3,当然,可以是4个,5个,并可能随时增加)。我们需要用Power Query把该文件夹下的所有文本文件中的内容追加到同一个工作表中,以便进行分析。 我们看到,在该文件夹下,不仅仅有文本文件,还有Excel文件,这不要紧,只要我们明确地告诉Power Query只取该文件夹下的文本文件即可。首先,点击"Power Query》获取外部数据》从文件》从文件夹"按钮。 在接下来的“文件夹”对话框中,选择要合并的文本文件所在的文件夹的位置。然后点击"OK"和"确认"按钮。 这时进入Power Query查询编辑器界面,在这个界面中,我们看到了所选文件夹下的所有文件列表。在这里我们只对该文件夹下的文本文件感兴趣。因此,我们下面对该列表中的"Extention"(文件扩展名)列进行筛选。按照图示进行操作,只保留.txt文件。 筛 选结果如下,我们看到,现在的文件列表中只保留了txt文本类型的文件,下面的任务是把文本文件中的内容显示在查询结果中。我们看到,在文件列表的第一列 的标题是Content(文件内容),在Content标题边上有一个"向下的两个小箭头"的图表,点击这个图表可以显示列表中文件的内容,我们点击它。 这时,我们看到了每一个文本文件的内容(从第22行开始,是第2个文本文件中的内容)。美中不足的是,除了第一个文件,后面的每一个文件的标题都被当做了普通记录,这可不行! 通 过观察发现,数据的第一列是工号,里面是文本型的数字,作为解决方案之一,我们可以通过把该列数据转换成数字,这时,不能转换成数字的内容会显示为错误符 号,然后我们再通过删除错误行,得到我们需要的结果(这里只是为了显示Power Query的功能,事实上,我们工作中遇到的文本文件内容五花八门,需要各种灵活的方案)。 选中工号列,然后点击"转换》数据类型"按钮,在的下拉列表中选择"整数",我们看到,文本文件标题行中的文字"工号"变成了Error标识。我们下一步可以通过"删除错误"来删除这些行。 点击"主页》减少行》删除错误"按钮。 我们看到,错误行没有了(上图的第22行),这正是我们需要的结果。观察Power Query界面的右下角,可以看到,我们的前面所做的操作步骤都记录在这里了。 点击"主页》关闭&加载",把结果加载到Excel工作表。我们看到,指定文件夹下所有文本文件中的内容都已经合并单一的工作表中来了。当文件夹下有新的"同构"的文本文件时,我们只要点击"查询》数据》刷新"即可得到最新数据(或者鼠标右键菜单"刷新")。 更多关于PowerQuery的超凡能力,请百度电子书《Power Query,一学就会!》