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

PowerShell导出CSV后Excel丢失前导零的问题求助

保留CSV导出值的前导零(Excel打开时不丢失)

我需要用Get-ChildItem(简称gci)提取名为'2023'的文件夹下所有文件名中第一个.后的带前导零数值(比如文件名12345.001.chris_comp.NY.2023_08_22.xlsx中的001),导出到CSV后,在Notepad++中查看正常,但Excel打开会自动去除前导零,显示为1。

当前使用的代码:

#splitFile
$numberedFolder = 'C:\Users\cthor\OneDrive\Documents\PowerShell\Test'
$outputFile = "C:\Users\cthor\OneDrive\Documents\PowerShell\Results\results_$(Get-Date -f yyyy-MM-dd-hh-mm-ss).csv"
Get-ChildItem -Directory -Recurse -LiteralPath $numberedFolder -Filter '2023' |
    Get-ChildItem -File |
    Select-Object @{name='process id';Expression={'{0:d3}' -f [int] $_.Name.Split('.')[1]}} | #preverse leading 0's.
    Export-Csv -Path $outputFIle -Append -NoTypeInformation

临时解决方法:试过在格式化字符串前加制表符,测试有效,但希望找到更优方案:

# 将 '{0:d3}' 替换为 "`t{0:d3}"

最优解决方案

问题根源有两个:

  1. 代码中先将原始带前导零的字符串转为[int],转换过程直接丢失了前导零,后续格式化只是补零而非保留原始值;
  2. Excel会自动识别CSV中的数字内容,即使是001也会被转为数字类型,从而去除前导零。

修改后的代码(直接保留原始字符串,并标记为Excel可识别的文本格式):

#splitFile
$numberedFolder = 'C:\Users\cthor\OneDrive\Documents\PowerShell\Test'
$outputFile = "C:\Users\cthor\OneDrive\Documents\PowerShell\Results\results_$(Get-Date -f yyyy-MM-dd-hh-mm-ss).csv"
Get-ChildItem -Directory -Recurse -LiteralPath $numberedFolder -Filter '2023' |
    Get-ChildItem -File |
    Select-Object @{
        name='process id';
        Expression={ 
            # 直接提取原始带前导零的分段字符串,避免转int丢失信息
            $rawSegment = $_.Name.Split('.')[1]
            # 加单引号让Excel识别为文本,单引号不会在Excel中显示
            "'$rawSegment"
        }
    } | 
    Export-Csv -Path $outputFile -Append -NoTypeInformation -UseQuotes AsNeeded

另一种可选方案(用=包裹双引号的形式):

# 修改Expression部分为:
Expression={ 
    $rawSegment = $_.Name.Split('.')[1]
    "=`"$rawSegment`""
}

说明

  • 直接提取文件名分割后的原始字符串,避免类型转换丢失前导零;
  • 通过添加文本标记(单引号或=+双引号),强制Excel将该单元格识别为文本类型,从而保留前导零;
  • -UseQuotes AsNeeded参数让CSV仅在必要时添加引号,保证文件简洁性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:30