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

PowerShell批量转TXT为CSV:避免acct列转为科学计数法

解决方案

修改PowerShell脚本实现acct列添加单引号

你之前的问题出在单独提取acct列修改后,没把修改后的值写回原数据对象,直接导出就只会输出数组的Length属性。下面是修正后的脚本,能保留所有原表头和列,只修改acct列:

$path = "C:\Test\*.txt"
$files = Get-ChildItem $path | Where-Object { !$_.PSIsContainer }
foreach ($file in $files) {
    $newFileName = $file.FullName -Replace "\.txt$", ".csv"
    # 导入TXT里的CSV数据
    $csvData = Import-Csv $file.FullName
    # 遍历每一行,给acct字段加单引号前缀
    foreach ($row in $csvData) {
        $row.acct = "'$($row.acct)"
    }
    # 导出修改后的CSV,指定UTF8编码避免乱码
    $csvData | Export-Csv $newFileName -NoTypeInformation -Encoding UTF8
}

重点说明:

  • 用foreach ($row in $csvData)遍历每一行数据,直接修改对象的acct属性,这样所有原有列和表头都会保留,只修改目标列。
  • 替换文件名时用"\.txt$"正则,避免误改文件名里包含.txt的其他文件(比如test.txt.bak)。
  • 加-Encoding UTF8是为了避免部分情况下Excel读取CSV时出现乱码。

其他避免科学计数法的办法

如果不想加单引号,还有这两种可选方案:

  • 制表符前缀法:把$row.acct = "'$($row.acct)"改成$row.acct = "t$($row.acct)"`,Excel打开时会把带制表符前缀的内容识别为文本,不会转成科学计数法,但单元格前会有个制表符,适合不需要单引号的场景。
  • Excel导入手动设置:如果是手动用Excel打开CSV,在导入向导里选acct列,把数据类型改成「文本」就行,但这个方法没法批量处理,适合少量文件的情况。

效果验证

原数据行:

data_id,place,placepool_id,acct,sec_acct,ter_acct,source_acct,product_id
123A0001234567,00,12345,1234567890123456,9876543210123456,,,123,

修改后导出的CSV里,acct列会变成'1234567890123456,Excel打开时会直接识别为文本,不会显示成1.23457E+15这种科学计数法格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:55:02