使用ImportExcel PowerShell模块高亮Excel指定列(A、B、F列)
实现Excel指定列高亮需求
当前需求是读取JSON文件并导出指定列到Excel,已实现匹配数组值并高亮Components工作表中的对应单元格,现需调整为高亮匹配行的A、B、F列。
修改后的脚本
$Modules | Select-Object filename,pathname,productVersion | Sort-Object -Property filename | Export-Excel -Path $FilePath -WorksheetName "HighlightedComponents" -BoldTopRow -AutoSize $json.Products.info | Sort-Object -Property filename | Export-Excel -Path $FilePath -WorksheetName "Components" -Append -AutoSize $ExcelPkg = Open-ExcelPackage -Path $FilePath $worksheet = $ExcelPkg.Workbook.Worksheets["Components"] foreach ($module in $Modules) { # 遍历工作表的行,从第2行开始(跳过表头) for ($row = 2; $row -le $worksheet.Dimension.End.Row; $row++) { $cellValue = $worksheet.Cells[$row, 1].Value # 假设filename在A列(第1列) if ($cellValue -eq $module.filename) { Write-Host "匹配到行: $row" -ForegroundColor Cyan # 定义需要高亮的列:A(1)、B(2)、F(6) $columnsToHighlight = @(1, 2, 6) foreach ($col in $columnsToHighlight) { $address = $worksheet.Cells[$row, $col].Address Add-ConditionalFormatting -Worksheet $worksheet -Address $address -RuleType ContainsText -Text $module.filename -BackgroundColor Yellow } } } } Close-ExcelPackage -ExcelPackage $ExcelPkg -Show
关键改动说明
- 优化遍历逻辑:直接按行遍历工作表(跳过表头行),避免遍历所有单元格,提升执行效率
- 精准定位匹配行:假设
filename存储在A列,直接读取每行A列的值与目标值对比 - 指定高亮列:通过数组
@(1,2,6)对应A、B、F列,循环为匹配行的目标列单元格添加高亮格式 - 明确匹配规则:添加
-Text $module.filename参数,确保条件格式仅匹配目标文本
内容的提问来源于stack exchange,提问作者Vabhs
相关产品推荐
相关产品推荐

