如何使用PowerShell重命名Excel文件中的指定工作表
重命名Excel指定工作表的解决方案
你当前使用的是PowerShell脚本,无需掌握C#,修改现有脚本即可满足需求。你原有代码仅能修改第一个工作表,是因为固定指定了item(1)取第1个工作表,同时还有存储方法调用错误、COM对象未释放的问题。
可直接使用的修改后脚本
场景1:按原有名称指定要重命名的工作表
如果你知道要修改的日期名称工作表的完整原名,使用以下脚本,替换对应参数即可:
# 自定义配置项 $xlspath = "D:\New folder\Testing.xlsx" $targetOldName = "20240520" # 替换为你要修改的日期工作表原名 $newSheetName = "Result_最新" # 替换为你要设置的新名称 # 初始化Excel COM对象 $excel = New-Object -ComObject Excel.Application $excel.Visible = $false try { $workbook = $excel.Workbooks.Open($xlspath) # 匹配目标工作表 $targetSheet = $workbook.Worksheets | Where-Object {$_.Name -eq $targetOldName} if (!$targetSheet) { Write-Host "未找到指定名称的工作表" return } # 重命名 $targetSheet.Name = $newSheetName # 保存修改 $workbook.Save() Write-Host "重命名完成" } catch { Write-Host "操作出错:"$_.Exception.Message } finally { # 清理进程避免后台残留Excel if ($workbook) { $workbook.Close() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null } $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null Remove-Variable excel [GC]::Collect() [GC]::WaitForPendingFinalizers() }
场景2:自动取最后一个工作表(最新工作表)重命名
如果你的工作表按插入顺序排列,最后一个就是最新的,把上面匹配目标工作表的代码替换为下面这行即可:
$targetSheet = $workbook.Worksheets.Item($workbook.Worksheets.Count)
注意事项
- 运行脚本前请关闭对应Excel文件,避免文件占用报错
- 重命名前建议备份原文件,避免误操作丢失数据
- 工作表名称不能包含
\ / ? * [ ]特殊字符,长度不能超过31个字符
内容的提问来源于stack exchange,提问作者bishch
相关产品推荐
相关产品推荐

