You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Power Query导入CSV时自动添加多余空列?

解决Power Query导入动态列数CSV时自动添加空列的问题

问题核心就是你代码里硬写了Columns=7,强制指定了列数——当CSV实际列数少于7时,Power Query会自动补空列;列数多于7时又会截断数据。要实现自动适配实际列数,只需要做以下修改:

修改步骤

  • 删掉Csv.Document参数里的Columns=7,让Power Query自动识别CSV的实际列数
  • 后续的列处理逻辑无需调整,因为本来就是基于Table.ColumnNames(Source)动态获取列名,天然支持动态列数

修改后的完整代码

let
    FilePath = Excel.CurrentWorkbook(){[Name="fp"]}[Content]{0}[TheFilePath],
    Source = Csv.Document(File.Contents(FilePath),[Delimiter=",", Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Changed Type" = Table.TransformColumnTypes(Source,List.Transform(Table.ColumnNames(Source),each {_,type text})),

    BulkReplaceSyntac = fBulkReplacePart(#"Changed Type", MyFindReplace, Table.ColumnNames(#"Changed Type")),
    #"Replaced Value" = Table.ReplaceValue(BulkReplaceSyntac,"#(00A0)","",Replacer.ReplaceText,Table.ColumnNames(BulkReplaceSyntac)),
    #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","#(0087)","",Replacer.ReplaceText,Table.ColumnNames(#"Replaced Value")),
    #"Replaced Null" = Table.ReplaceValue(#"Replaced Value1",null,"",Replacer.ReplaceValue,Table.ColumnNames(#"Replaced Value1")),

    #"Promoted Headers" = Table.PromoteHeaders(#"Replaced Null", [PromoteAllScalars=true]),
    #"Removed Errors" = Table.RemoveRowsWithErrors(#"Promoted Headers", Table.ColumnNames(#"Promoted Headers"))
in
    #"Removed Errors"

补充说明

取消Columns参数后,Csv.Document会自动读取CSV的表头行来确定列数,后续的类型转换、文本替换等操作都是基于动态获取的列名列表执行,完全适配CSV列数的变化,不会再生成多余的空列。

内容的提问来源于stack exchange,提问作者Einarr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:17:18