PowerShell修改Excel指定行字体为删除线失效问题求助
问题原因及解决办法
问题出在哪
你用Style.Font.Strikethrough修改删除线时,本质是修改了Excel的全局样式属性。默认情况下整个工作表的单元格都应用了这个基础样式,所以一旦修改样式的字体删除线,所有用该样式的单元格都会跟着变化,自然全表都加上了删除线。
正确的做法
跳过Style层级,直接修改目标行/单元格的Font.Strikethrough属性——这是针对单个范围的直接格式设置,不会影响全局样式。
修改后的代码示例:
$Rows = get-content c:\temp\Rrows.txt foreach($Row in $Rows){ if ($ExcelWorkSheet2.cells.Item($Row,3).Value() -ne "Something"){ # 直接给整行设置删除线,仅作用于当前行 $ExcelWorkSheet2.Rows($Row).Font.Strikethrough = $True # 注释掉原来的删行代码 # $RowToDelete = $ExcelWorkSheet2.Cells.Item($Row,1).EntireRow # $RowToDelete.Delete() } }
如果需要只给特定列设置删除线,同样去掉Style:
# 单独设置某几列的删除线 $ExcelWorkSheet2.Cells.Item($Row,1).Font.Strikethrough = $True $ExcelWorkSheet2.Cells.Item($Row,2).Font.Strikethrough = $True $ExcelWorkSheet2.Cells.Item($Row,3).Font.Strikethrough = $True
内容的提问来源于stack exchange,提问作者Madim2020
相关产品推荐
相关产品推荐

