#Powerquery 利用M函数合并文件(CSV、Text、Xlsx)
在日常工作中,我们往往会遇到多个文件需要合并的情况,本文一起探讨一下利用M函数合并文件的案例。
由于需要合并的文件的格式不同,也需要选择不同的M函数来进行合并,本文将分享三个格式的合并案例。
首先介绍一下合并步骤,
1:对新建一个新查询,数据源选择为目标文件的路径。

2:点击转化数据

3:添加一个自定义列

4:利用M函数合并
=Csv.Document([Content],[Delimiter=",", Encoding=936])
5:展开对应TABLE数据即可完成全部操作,合并XLSX以及TEXT格式的文件也是同理可得。
解析:此处主要利用两个M函数进行合并操作
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.Document([Content],[Delimiter=",", Encoding=936]) #CSV文件默认值为936,CSV合并M函数
=Csv.Document(File.Contents(TXT文件路径),[Delimiter=" ", Columns=字段个数,Encoding=1200)#中文TXT文件默认值为1200,TXT合并M函数
无论文件的后缀名是CSV还是TXT,这两类文件都属于文本文件。构成文本文件的内容有两部分,一个是数据内容,另一个是字段与字段间的分隔符。CSV和TXT两种文本文件最大的区别在于他们的分隔符不同。CSV文件固定用“,”进行分隔,而TXT文件的分隔符可以自由设定为任意字符串,但通常情况下默认的TXT文件的分隔符为制表符,也就是按下Tab键时生成的字符。除此之外,为了正确显示中文字符,文本文件中还需要考虑文字编码因素。在Excel中默认的中文CSV文件的文字编码为“936”,而默认的中文TXT文件的文字编码为“1200”。
因为此处是合并csv文件,一般分隔符为",",代码 [Delimiter=",", Encoding=936] , 合并txt文件,此处分割符为 " ",Encoding=1200。
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.Workbook([content])
其他操作同上
总结
利用M函数合并文件,需要根据目标的文件格式,选择不同的M函数,在合并CSV和TXT的文件时,需要注意分隔符和编码格式,来避免展开乱码的问题,而标准XLSX的格式则不需要,直接M函数展开即可。
以上,期待下次的分享。
#Powerquery 利用M函数合并文件(CSV、Text、Xlsx)的更多相关文章
- linux下用scp命令在两个服务器之间传输文件,利用php_scp函数进行文件传输
在linux下利用scp进行文件传输, 从服务器下载文件 scp username@servername:/path/filename /path/filename 上传本地文件到服务器 scp /p ...
- c#(winform,webform通用)利用npoi将xls文件复制为xlsx文件(excel的修改,保存,包括excel2003-office2007+的处理)
1.程序界面 每次需要处理excel文件的时候,都是去百度找方案,真是气一头火,今天好好总结一下,下次就不用度娘了. 我是用winform来试验的,因为winform比较方便测试,实际上只要是在.ne ...
- 152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv
152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv 附件下载地址:https://jiaopengzi.com/2602.html 一.背景 在我们使用 ...
- Linux:不同文件相同列字符合并文件(awk函数)
存在file1.txt,其内容如下: H aa 0 0 1 -9 H bb 0 0 2 -9 H cc 0 0 2 -9 存在file2.txt,其内容如下: H aa 0 0 0 -9 asd qw ...
- DiscuzX /source/function/function_core.php通用核心函数库文件分析
... <?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to l ...
- 利用XPath读取Xml文件
之所以要引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路径:通过文件管理路 径,可以按照一定的规则查找到所需要的文件:同样,依据X ...
- 计算机程序的思维逻辑 (64) - 常见文件类型处理: 属性文件/CSV/EXCEL/HTML/压缩文件
对于处理文件,我们介绍了流的方式,57节介绍了字节流,58节介绍了字符流,同时,也介绍了比较底层的操作文件的方式,60节介绍了随机读写文件,61节介绍了内存映射文件,我们也介绍了对象的序列化/反序列化 ...
- 利用tornado实现表格文件预览
项目介绍 本文将介绍笔者的一个项目,主要是利用tornado实现表格文件的预览,能够浏览的表格文件支持CSV以及Excel文件.预览的界面如下: 下面我们将看到这个功能是如何通过tornado ...
- Loadrunner 脚本开发-利用web_submit_data函数实现POST请求
脚本开发-利用web_submit_data函数实现POST请求 by:授客 QQ:1033553122 概述 web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的 ...
- Java编程的逻辑 (64) - 常见文件类型处理: 属性文件/CSV/EXCEL/HTML/压缩文件
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
随机推荐
- mysql数据迁移,通用windows->linux,linux->windows
1. 将用到的数据库文件夹直接拷贝到目标文件夹,mysql5.7在linux中默认在var/lib/mysql,将data下ibdata1也要拷贝进去 2. linux下需要将所有者root改为mys ...
- git提交的时候,报错yarn run v1.21.1 ,SyntaxError: Cannot use import statement outside a module 解决
原因是 lint-staged这个依赖中,需要的node的版本是, 而我使用的node版本是12.13.1 ,切换成14.17.0就可以了
- 使用react-vite-antd,修改antd主题,报错 [vite] Internal server error: Inline JavaScript is not enabled. Is it set in your options? It is hacky way to make this function will be compiled preferentially by less
一般报错 在官方文档中,没有关于vite中如何使用自定义主题的相关配置,经过查阅 1.安装less yarn add less (已经安装了就不必再安装) 2.首先将App.css改成App.les ...
- 微信小程序分享出去的页面再点进来,如何取值并且在新用户未授权的情况下,授权后跳到当前页面
1.如何点击分享的页面进来,授权后跳转到当前页面 可以在授权成功后,将openid.头像.昵称入库成功之后,标记一下,及getStorageSync // 通过code获取openid getUser ...
- Spring5 feamework modules
一.Spring框架的组成 由 core container(核心容器) Data Access and DataIntegration(数据读取和数据整合) web AOP(面向切面编程) Inst ...
- layui tree 未命名 所遇到的坑
由于传入类型不对,需要传入object类型,我传入的是String类型,所以出现了 一堆未命名, 在控制台输出查看,是一模一样的,困扰了我一下午,再次感谢老哥 参考自:https://www.cnbl ...
- RPA的概念及未来发展趋势
RPA是Robotic Process Automation(机器人自动化)的简称.我们可以把它理解为"虚拟机器人"替代人工的一种方式.RPA不仅可以模拟人类,而且可以利用和融 ...
- MyBatisPlus 整合 SpringBoot 遇见的问题(二)
[异常]:Cause: java.sql.SQLSyntaxErrorException: Unknown column 'udf1' in 'field list'...... SQL: SELEC ...
- diyudio 3886 功放机鉴赏
- Docker部署nginx+vue项目并运行
一.打包VUE项目 npm run build:prod 二.编写default.conf 文件 server { listen 80; server_name localhost; #charset ...