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

如何用PowerShell将CSV所有行列转大写及实现列遍历?

批量修改CSV所有列的大小写(PowerShell实现)

现有代码说明

$in = Import-Csv .\in.csv
$TextInfo = (New-Object System.Globalization.CultureInfo("en-US")).TextInfo;
$in | ForEach-Object { $_.name = $textInfo.ToUpper($_.name) }
$in | Export-Csv .\out.csv

上述代码可将CSV指定列转换为大写(也可替换为ToTitleCase实现首字母大写格式)。


核心疑问解答

1. 确定CSV的列数

通过Import-Csv导入的每一行数据都是自定义对象,对象的属性名对应CSV的列名。获取列名集合后,通过Count属性即可得到列数:

  • 方法一:取第一行对象的属性名集合
    $columnNames = $in[0].PSObject.Properties.Name
    $columnCount = $columnNames.Count # 得到列数
    
  • 方法二:通过Get-Member提取属性名
    $columnNames = ($in | Get-Member -MemberType Properties).Name
    $columnCount = $columnNames.Count # 得到列数
    

2. 循环遍历所有列并修改大小写

拿到列名集合后,嵌套循环遍历每一行和每一列,对单元格内容进行批量转换:

  • 遍历每一行数据,在每行内循环所有列名
  • 通过$currentRow.$col的方式动态引用列,修改其值

完整实现代码

# 导入目标CSV文件
$in = Import-Csv .\in.csv
# 初始化英文文本格式化对象,用于大小写转换
$textInfo = (New-Object System.Globalization.CultureInfo("en-US")).TextInfo

# 获取CSV的所有列名
$columnNames = $in[0].PSObject.Properties.Name

# 批量修改所有单元格内容的大小写
$in | ForEach-Object {
    $currentRow = $_
    foreach ($col in $columnNames) {
        # 此处可替换为ToTitleCase实现首字母大写
        $currentRow.$col = $textInfo.ToUpper($currentRow.$col)
    }
}

# 导出修改后的内容到新CSV(-NoTypeInformation避免生成多余类型行)
$in | Export-Csv .\out.csv -NoTypeInformation

提示:若需要首字母大写的格式,只需将代码中的$textInfo.ToUpper替换为$textInfo.ToTitleCase即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:53:16