美文网首页PowerQuery
PowerQuery合并多个csv文件

PowerQuery合并多个csv文件

作者: PowerQuery | 来源:发表于2016-05-21 12:39 被阅读943次

知道怎么合并同一个文件夹下的多个Excel文件,其代码是:

let
  源 = Folder.Files("C:\Users\王华庭\Desktop\测试与练习\省级单位模板测试"),
  删除的其他列 = Table.SelectColumns(源,{"Content"}),
  已添加自定义 = Table.AddColumn(删除的其他列, "展开二进制", each Excel.Workbook([Content])),
  #"展开的“展开二进制”" = Table.ExpandTableColumn(已添加自定义, "展开二进制", {"Name", "Data", "Item", "Kind", "Hidden"}, {"Name", "Data", "Item", "Kind", "Hidden"}),
  删除的其他列1 = Table.SelectColumns(#"展开的“展开二进制”",{"Data"}),
  #"展开的“Data”" = Table.ExpandTableColumn(删除的其他列1, "Data", {"Column1", "Column10", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9"}, {"Column1", "Column10", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9"})
in
  #"展开的“Data”"

【注意:我发现将Data表展开后,如果原始Excel中有多个表格,且表格列数不一样时,很可能PowerQuery会按照列数少的表格来设置展开后的表格列,这样就可能漏掉关键列的数据。所以,最好在展开之前筛选下,或者直接将原始表格里那些不要的表格干掉,只留下结构一模一样的表格】

但是用同样的方法去合并csv文件却不行,无意中直接点击Binary列的展开按钮,获得一个csv文件,当我双击时,奇迹发生了:我获得了我想要的结果。代码如下:

let
  源 = Folder.Files("C:\mypath\MyCsvFolder"),
  删除的其他列 = Table.SelectColumns(源,{"Content"}),
  合并的二进制 = Binary.Combine(删除的其他列[Content]),
  #"导入的 CSV" = Csv.Document(合并的二进制,[Delimiter=",", Columns=9, Encoding=936, QuoteStyle=QuoteStyle.None]),
  提升的标题 = Table.PromoteHeaders(#"导入的 CSV"),
  更改的类型1 = Table.TransformColumnTypes(提升的标题,{{"账号", type text}})
in
  更改的类型1

合并一个文件夹下面的Excel文件,可以反过来像csv文件那样照猫画虎不?实际测试结果是不行。
先贴代码:

let
  源 = Folder.Files("C:\Users\王华庭\Desktop\测试与练习\省级单位模板测试"),
  删除的其他列 = Table.SelectColumns(源,{"Content"}),
  合并的二进制 = Binary.Combine(删除的其他列[Content]),
  #"导入的 Excel" = Excel.Workbook(合并的二进制)
in
  #"导入的 Excel"

代码运行的结果如下:


出错啦

所以,合并Excel文件,还是老老实实按照常规办法来。

题外话,如果合并TXT文件呢?
经过测试,TXT文件会被当成csv文件来处理,所以可以按照合并csv文件的方式来操作。唯一需要注意的是,原始TXT文件必须选择正确的编码,比如中文最好用记事本(NotePad++貌似无法选择编码,也许是我不会用)另存为UTF-8格式,否则会出现乱码。

相关文章

网友评论

  • V1688189:请问下,你们这个有自己的微信和网站呀?
    V1688189: @PowerQuery 就是问下,我是因为你的这篇文章才下载的简书,一般我对这些社交软件不是很热衷
    PowerQuery:@V1688189 啊不好意思,我这个名字估计让您误会了。我是PowerQuery业余爱好者,跟微软官方Power BI没有任何关系。我会时不时把自己撰写的PowerQuery相关日志放到简书里来。
  • FRANCiS_9529:这个在哪里执行?
    PowerQuery:@FRANCiS_9529 查询编辑窗口
  • 朽木_4eeb:请教大神,如果是用csv.document这个,但是合并之后想要文件名的字段就没了。。。
    PowerQuery:我刚才爬起来开电脑用excel2016试验了下,直接点Binary那一列的展开符号,qp自动合并后有Source.Name这个列,保留了原始文件名,但是左侧查询列表多了几个新查询,我估计是微软作了更新?确实用了Csv.document()之后就没有原始文件名了。这是因为此函数操作的是两个csv文件的内容(这里边没有文件名称),而不是它们在pq里的列表字段。所以,您如果想要获取合并后每个csv文件的名称,更新pq然后直接用展开Binary的方式吧。

本文标题:PowerQuery合并多个csv文件

本文链接:https://www.haomeiwen.com/subject/alxorttx.html