冻结工作表的第一行

PowerShell代码创buildExcel。

我试图冻结第一行:

$excel = New-Object -Com Excel.Application $excel.Visible = $True $wb = $Excel.Workbooks.Add() $ws = $wb.Worksheets.Add() $ws.Activate() $ws.Select() $excel.Rows.Item("1:1").Select() $excel.ActiveWindow.FreezePanes = $true 

而不是冻结第一行,它冻结行的中心和列的中心,即

在这里输入图像描述

UPDATE

在重复post中的解决scheme不起作用,即

 $excel.Rows("1:1").Select() $excel.ActiveWindow.FreezePanes = $true 

给出以下错误:

 Method invocation failed because [System.__ComObject] does not contain a method named 'Rows'. At D:\Script\upgrades.ps1:231 char:5 + $excel.Rows("1:1").Select() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (Rows:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound 

要冻结第一行,您需要select第二行:

 $excel.Rows.Item("2:2").Select() $excel.ActiveWindow.FreezePanes = $true 

如果您有多个工作表并需要冻结每个工作表的第一行:

 $colSheets = ($Sheet1, $Sheet2, $Sheet3, $Sheet4, $Sheet5) foreach ($page in $colSheets){ $page.Select() $page.application.activewindow.splitcolumn = 0 $page.application.activewindow.splitrow = 1 $page.application.activewindow.freezepanes = $true } #After you are done, re-select first sheet (optional) $Sheet1.Select()