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

如何使用PowerShell调用Excel.Application打开CSV并按文本格式导入数据

PowerShell CSV转XLSX保留原始格式解决方案

原有代码直接调用Workbooks.Open()方法会触发Excel的自动类型推断逻辑,会自动将看起来是数字的文本转换为数值类型,导致前导零丢失,且无法自定义CSV解析规则适配特殊内容场景。
推荐使用Excel原生的Workbooks.OpenText()方法实现需求,该方法支持自定义列格式、CSV分隔规则、多行内容解析,可完美覆盖你提到的所有场景。

完整可运行代码

$csvPath = "替换为你的源CSV文件完整路径.csv"
$xlsxPath = "替换为输出的XLSX文件完整路径.xlsx"

# 读取CSV表头获取总列数,用于配置所有列按文本格式导入
$csvColumns = (Get-Content $csvPath -First 1 | ConvertFrom-Csv).PSObject.Properties.Name.Count
# 生成列格式配置:所有列统一使用文本格式(值2对应Excel常量xlTextFormat)
$columnInfo = 1..$csvColumns | ForEach-Object { ,@($_, 2) }

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
# 关闭Excel自动转换数字、自动格式化的规则,避免意外修改内容
$excel.AutoCorrect.TextAutoNumber = $false
$excel.AutoCorrect.TextAutoFormat = $false

# 按自定义规则导入CSV
$excel.Workbooks.OpenText(
    $csvPath,
    [Microsoft.Office.Interop.Excel.XlPlatform]::xlWindows,
    1, # 从第一行开始读取内容
    [Microsoft.Office.Interop.Excel.XlTextParsingType]::xlDelimited, # 按分隔符拆分列
    [Microsoft.Office.Interop.Excel.XlTextQualifier]::xlTextQualifierDoubleQuote, # 文本包裹符为双引号
    $false, # 不将连续分隔符视为单个
    $false, # 不使用制表符作为分隔符
    $false, # 不使用分号作为分隔符
    $true,  # 使用逗号作为分隔符
    $false, # 不使用空格作为分隔符
    $false, # 不使用自定义分隔符
    $columnInfo # 应用列格式配置
)

$wb = $excel.ActiveWorkbook
# 保存为标准XLSX格式,51对应Excel常量xlOpenXMLWorkbook
$wb.SaveAs($xlsxPath, 51)
$wb.Close($false)
$excel.Quit()

# 释放COM对象,避免Excel进程残留后台
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($wb) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

方案适配说明

  • 前导零保留:所有列强制配置为文本格式导入,Excel不会将数字字符串识别为数值类型,完整保留前导零
  • 内容内逗号保留:指定文本识别符为双引号,所有被双引号包裹的内容中的逗号不会被识别为列分隔符,会作为单元格内容的一部分完整保留
  • 多行文本保留:OpenText原生支持标准CSV格式的多行内容,被双引号包裹的换行符会被识别为单元格内换行,导入后会保留原有换行格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:45:02