使用 powershell 更新 Excel 工作表中的单元格

sig*_*use 3 powershell

我需要从电子表格中搜索一行中的单词,并使用不同的值更新同一行中的另一个单元格。例如,我有这样的数据。我需要从下面的电子表格中搜索“Smith”这个人,并将该行的“状态”列的值从“启用”更新为“禁用”。

"Region","Zone","Customer","Process","Status"
"TEST","East","Smith","HR","Disabled"
"TEST","East","Allen","Finance","Enabled"
"TEST","East","Jake","Payroll","Enabled"
Run Code Online (Sandbox Code Playgroud)

在发布问题之前,我尝试了正则表达式和其他一些函数。但我无法让他们工作。

谢谢。

小智 11

通过 PowerShell 使用 Excel 非常简单:

Add-Type -AssemblyName Microsoft.Office.Interop.Excel

$excelFile = 'C:\test\testsheet.xlsx' 

$searchFor            = 'Smith'

$excel                = New-Object -ComObject Excel.Application
$excel.Visible        = $true
$excel.ScreenUpdating = $true

$workbook  = $excel.Workbooks.Open( $excelFile ,$null, $false )

$ws        = $workbook.WorkSheets.item(1) 

[void]$ws.Activate()

$searchRange  = $ws.UsedRange

$searchResult = $searchRange.Find( $searchFor, [System.Type]::Missing, [System.Type]::Missing, 
                                               [Microsoft.Office.Interop.Excel.XlLookAt]::xlWhole, 
                                               [Microsoft.Office.Interop.Excel.XlSearchOrder]::xlByColumns, 
                                               [Microsoft.Office.Interop.Excel.XlSearchDirection]::xlNext )

while( $searchResult ) {

    $row = $searchResult.Row
    $col = $searchResult.Column

    $ws.Cells( $row, $col + 2 ).Value2 = 'Disabled'
    $searchResult = $searchRange.FindNext( $searchResult )

    if( $searchResult -and $searchResult.Row -le $row ) {
        break
    }
}

[void]$workbook.Save()
[void]$workbook.Close()
[void]$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
Run Code Online (Sandbox Code Playgroud)