[英]Powershell script to match condition of excel cell values
我是Powershell的新手程序員,我正在嘗試執行excel搜索以及更改格式和字體選項。 這是我正在嘗試搜索“通過”一詞並將其顏色更改為綠色和粗體的代碼段,當前代碼確實退出了而未按預期更改,這是我不知道的錯誤所在,需要幫助這方面。
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $False
$workbook = $excel.Workbooks.Open("C:\test.xlsx")
$sheet = $workbook.ActiveSheet
$xlCellTypeLastCell = 11
$used = $sheet.usedRange
$lastCell = $used.SpecialCells($xlCellTypeLastCell)
$row = $lastCell.row # goes to the last used row in the worksheet
for ($i = 1; $i -lt $row.length; $i++) {
If ($sheet.cells.Item(1,2).Value() = "PASSED") {
$sheet.Cells.Item(1,$i+1).Font.ColorIndex = 10
$sheet.Cells.Item(1,$i+1).Font.Bold = $true
}
}
$workbook.SaveAs("C:\output.xlsx")
$workbook.Close()
Input(test.xlsx)文件具有以下內容
Module | test | Status
ABC a PASSED
它安靜着一個巨大的文件,每個單元測試的狀態不同。
$row
是一個包含最后一個行號的字符串,與其在for
循環中的Length
屬性相比,這會給您帶來麻煩,因為它將給您字符串本身的長度。
更改為:
for ($i = 1; $i -lt $row; $i++) {
在循環內的if
語句中,還有另一個問題: =
為了比較兩個值是否相等,請使用-eq
運算符而不是=
( =
僅用於賦值):
if ($sheet.cells.Item($i,2).Value() -eq "PASSED") {
$sheet.Cells.Item(1,$i+1).Font.ColorIndex = 10
$sheet.Cells.Item(1,$i+1).Font.Bold = $true
}
最后,Excel單元格引用不是從零開始的,因此Item(1,2)
將引用示例中具有值“ test”的單元格(請注意如何將行作為第一個參數,將列作為第一個參數)。第二)。 將其更改為Item(2,3)
以測試正確的單元格,並將單元格坐標也轉置到if塊內。
您可能還需要更新for
循環以反映這一點:
for ($i = 2; $i -le $row; $i++) {
if ($sheet.cells.Item($i,3).Value() = "PASSED") {
$sheet.Cells.Item($i,3).Font.ColorIndex = 10
$sheet.Cells.Item($i,3).Font.Bold = $true
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.