gpt4 book ai didi

excel - 将代码从 Excel 宏转换为 PowerShell

转载 作者:行者123 更新时间:2023-12-02 19:48:10 24 4
gpt4 key购买 nike

我在 Excel 中打开一个 CSV 文件并运行此宏来更改背景颜色。我正在尝试将这部分代码转换为 PowerShell。

   lrow = Range("G" & Rows.Count).End(xlUp).Row
Set MR = Range("G2:G" & lrow)
For Each cell In MR
If UCase(Trim(cell.Value)) = "FALSE" Then
cell.Interior.ColorIndex = 3
End If
Next

将此代码转换为 PowerShell 的任何帮助。

谢谢SR

最佳答案

你可以这样写:

$objExcel = New-Object -ComObject Excel.Application

$objExcel.Visible = $true
$objExcel.DisplayAlerts = $false

$filePath = "c:\logs\2015-04-23.csv"

$xlsFilePath = Get-Item -Path $filePath | % { Join-Path (Split-Path $_ -Parent) "$($_.BaseName).xls" }

$workBook = $objExcel.Workbooks.Open($filePath)
$workSheet = $WorkBook.sheets | select -First 1

$xlup = -4162

$lrow = $workSheet.cells.Range("G" + $workSheet.Rows.Count).End($xlup).Row

$workSheet.cells.Range("G2:G" + $lrow) | % {
$value = $_.Text
if($value.ToUpper() -eq "TRUE"){
$_.Interior.ColorIndex = 3
}
}

$WorkBook.SaveAs($xlsFilePath, 18)
$objExcel.Quit()

如果您有一个非常大的文件,使用 powershell 搜索值然后更新 Excel 工作表会更快。下面的示例看起来有点有趣,但执行速度要快得多。

$filePath = "c:\logs\2015-04-23.csv"

$rowAliases = 97..122 | foreach { ([char]$_).ToString().ToUpper() }
$selectedRow = "G"
$selectedName = (Get-Content $filePath -ReadCount 1 -TotalCount 1).Split(",")[$rowAliases.IndexOf($selectedRow)]
$startRow = 2
$rowCount = 1;

$objExcel = New-Object -ComObject Excel.Application

$objExcel.Visible = $true
$objExcel.DisplayAlerts = $false

$xlsFilePath = Get-Item -Path $filePath | % { Join-Path (Split-Path $_ -Parent) "$($_.BaseName).xls" }

$workBook = $objExcel.Workbooks.Open($filePath)
$workSheet = $WorkBook.sheets | select -First 1

Import-Csv -Path $filePath | % {

if($rowCount -ge $startRow){
[string]$value = $_ | select -ExpandProperty $selectedName

if($value.ToUpper() -eq "TRUE"){
$workSheet.cells.Item($rowCount + 1, $selectedIndex + 1).Interior.ColorIndex = 3
}
}

$rowCount ++
}

$WorkBook.SaveAs($xlsFilePath, 18)
$objExcel.Quit()

关于excel - 将代码从 Excel 宏转换为 PowerShell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com