知道怎么合并同一个文件夹下的多个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格式,否则会出现乱码。