Power Query M函数(6)--导入外部文件及文件夹公式

浏览: 4499

封面.PNG


Power Query以往文章:

Power Query M函数(1)--数据类型及数据结构

Power Query M函数(2)--计算方式与运算符

Power Query M函数(3)--数据类型转换、元数据及错误处理

Power Query M函数(4)--Excel小爬虫之爬网页数据

Power Query M函数(5)--Excel小爬虫之爬取求职网站动态信息

Power Query M函数(5附)--招聘平台职位信息动态分析仪



本章将为大家介绍使用M函数导入其他CSV、TXT、Excel等格式单个文件,以及批量导入Excel格式或CSV、TXT文本文件格式文件所在文件夹中所有文件的方法。

 

导入单个CSV、TXT等文本文件:

无论文件的后缀名是CSV还是TXT,这两类文件都属于文本文件。构成文本文件的内容有两部分,一个是数据内容,另一个是字段与字段间的分隔符。CSV和TXT两种文本文件最大的区别在于他们的分隔符不同。CSV文件固定用“,”进行分隔,而TXT文件的分隔符可以自由设定为任意字符串,但通常情况下默认的TXT文件的分隔符为制表符,也就是按下Tab键时生成的字符。除此之外,为了正确显示中文字符,文本文件中还需要考虑文字编码因素。在Excel中默认的中文CSV文件的文字编码为“936”,而默认的中文TXT文件的文字编码为“1200”。

 

了解了上述内容后我们就可以使用M函数在PowerQuery中轻松导入CSV和TXT文件了。这两个文件因为都是文本文件,所以他们使用同一个函数Csv.Document函数进行导入。

 

Csv.Document函数说明:

Csv.Document函数:返回CSV文档的内容作为表

表达式:function(source as any, optional columns as any, optional delimiteras any, optional extraValues as nullable, optional encoding as nullableTextEncoding Type) as table

说明:此函数在使用时需要为其指定四个参数

source是CSV或TXT文件的内容,可以是任意数据类型

columns是可选参数,是要导入的字段个数,如果要导入CSV或TXT文件中的所有字段,则可以省略columns

delimiter是分隔符,为可选参数,如果未指定则使用逗号作为分隔符

extraValues是可选参数,有关extraValues的支持值,请参阅ExtraValues.Type,一般不用

encoding是编码类型,是可选参数

 

导入CSV或TXT文件步骤:

1.      在PowerQuery编辑器中新建一个空查询

2.      在公式编辑栏为新查询输入公式:

导入CSV文件公式:

  =Csv.Document(File.Contents(CSV文件路径),[Delimiter=",",Columns=字段个数, Encoding=中文CSV文件默认值为936)

导入TXT文件公式:

  =Csv.Document(File.Contents(TXT文件路径),[Delimiter="     ", Columns=字段个数,Encoding=中文TXT文件默认值为1200)

3.      导入完成



导入单个Excel文件:

导入Excel文件时使用的函数为Excel.Workbook。因为一个Excel文件中可能含有多个工作表,原则上每一个工作表对应一个Power Query查询,所以在导入Excel文件内容后还需要为查询选择需要导入的工作表。

 

Excel.Workbook函数说明:

Excel.Workbook函数:从Excel工作簿返回工作表的记录

表达式:function(workbook as binary, optional useHeaders as nullablelogical, optional delayTypes as nullable logical) as table

说明:此函数可以将二进制的Excel文件信息转换为表数据,函数需要三个参数

workbook是必选参数,是要导入Excel文件的二进制信息,一般使用File.Contents函数可以将指定路径下的Excel文件保存为二进制信息

useHeaders是可选参数,一般使用null

delayTypes是可选参数,一般使用true

 

导入Excel文件步骤:

1.      在PowerQuery编辑器中新建一个空查询

2.      在高级编辑器中输入类似下方案例代码

let

    源 = Excel.Workbook(File.Contents(“Excel文件路径”), null, true),

    需要导入的工作表 = 源{[Item="工作表名",Kind="Sheet"]}[Data]

in

    需要导入的工作表

3.      导入完成



批量导入Excel格式文件所在文件夹中所有Excel文件:

Power Query的批量导入文件夹下的所有文件功能非常有用,试想如果你是某个大型集团公司人事部门的员工,你的主要工作是核算工资。每到月底你要把所有分公司提供上来的工资相关文件进行统一汇总,以便统一进行所有员工的工资核算。如果此集团公司下有50家分公司你就要分别打开50个不同文件,然后重复50次拷贝粘贴的工作才能完成。如果使用Power Query,便可以批量一次导入50个文件,会大大降低你的重复工作时间。

 

批量导入文件夹中文件时最好能够满足两个条件,第一个条件是文件夹下所有的文件格式应统一,不能让文件夹中既有Excel文件又有CSV或TXT等其他格式文件,如果要导入的是Excel文件还需要满足每个Excel文件中都只有一个工作表的条件。第二个条件是要导入的所有文件的格式应统一,也就是说每个文件中的字段数、字段排列顺序、字段类型应一致。满足这两个条件时我们才能真正保证批量导入文件夹下文件时不出错。

 

导入Excel格式文件夹中文件时使用的核心函数与导入单个Excel文件时使用的函数相同,都是Excel.Workbook

 

导入步骤:

1.      新建一个空查询

2.      在高级编辑器中输入并执行以下代码:


3.      返回编辑器主界面后展开“data.Data”表信息字段,选择自己所需要的字段,点击确定


4.      完成导入



批量导入CSV、TXT文本文件格式文件所在文件夹中所有文件:

导入文本类文件夹下所有文件时所使用的核心公式与导入单个文本文件时的公式相同,都是使用Csv.Document公式。

 

导入步骤:

1.      新建一个空查询

2.      在高级编辑器中输入并执行以下代码:


3.      返回编辑器主界面后展开“data”表信息字段,选择自己所需要的字段,点击确定


4.      完成导入

 

以上便是用Power Query M函数导入外部文件及文件夹方法的全部说明内容,感谢读者朋友们能够耐心看到最后,希望本章内容能够帮助大家提高工作效率,早完工早下班。



重磅预告:

在下期内容中,将为大家免费献上作者精心制作的“万能文件导入器.xlsx”文件,只需要填写好参数表,并在power query中调用作者写好的导数函数,不管是单个文件还是整个文件夹都可以瞬间搞定。




报名用数据说话-Excel BI商业智能分析零基础精讲课程系统学习Excel商业智能分析相关知识

推荐 2
本文由 李奇 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册