PowerQuery合并多个csv文件

知道怎么合并同一个文件夹下的多个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"

代码运行的结果如下:


PowerQuery合并多个csv文件_第1张图片
出错啦

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

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

你可能感兴趣的:(PowerQuery合并多个csv文件)