如何通过Powershell对.xlsx文件调用=PROPER()等大小写转换函数
PowerShell修改Excel指定列大小写的正确实现方法
原有代码错误点
- 直接将文件路径赋值给
$worksheet变量,未完成工作簿、工作表的加载操作 - 多列参数传入格式不符合PSExcel的要求
- PSExcel的列对象不存在内置的
ToProper()方法,需要自行实现对应大小写转换逻辑
可运行实现代码(基于PSExcel模块)
# 导入PSExcel模块 Import-Module PSExcel # 配置Excel文件路径 $excelFilePath = "C:\Users\USERNAME\Downloads\Book1.xlsx" # 加载Excel工作簿 $excelObject = New-Excel -Path $excelFilePath # 选择要操作的工作表,此处默认取第一个工作表,可修改为工作表名称,如Worksheets["Sheet1"] $worksheet = $excelObject.Workbook.Worksheets[1] # 定义需要调整格式的目标列,可按需增删 $targetColumns = @("Name", "Primary Worksite", "Primary Job Title") foreach ($columnName in $targetColumns) { # 匹配目标列的索引 $columnIndex = ($worksheet.Cells[1, 1..$worksheet.Dimension.End.Column] | Where-Object { $_.Value -eq $columnName }).Start.Column if (-not $columnIndex) { Write-Warning "未找到匹配列:$columnName,已跳过该列处理" continue } # 从第二行开始遍历处理数据(跳过表头行) for ($rowNum = 2; $rowNum -le $worksheet.Dimension.End.Row; $rowNum++) { $currentCellValue = $worksheet.Cells[$rowNum, $columnIndex].Value?.ToString() if (-not [string]::IsNullOrWhiteSpace($currentCellValue)) { # 首字母大写(对应Excel PROPER()函数效果) $worksheet.Cells[$rowNum, $columnIndex].Value = [cultureinfo]::CurrentCulture.TextInfo.ToTitleCase($currentCellValue.ToLower()) # 如需全小写(对应LOWER()),替换为:$currentCellValue.ToLower() # 如需全大写(对应UPPER()),替换为:$currentCellValue.ToUpper() } } } # 保存修改并释放资源 $excelObject.Save() $excelObject.Dispose()
注意事项
- 运行代码前需提前安装PSExcel模块,未安装可执行
Install-Module -Name PSExcel -Scope CurrentUser完成安装 - 建议处理前备份原Excel文件,避免操作失误导致数据丢失
- 如果工作表名称固定,可将
Worksheets[1]修改为指定名称,如Worksheets["员工信息"],避免工作表顺序变动导致处理错误
内容的提问来源于stack exchange,提问作者Fiala06
相关产品推荐
相关产品推荐

