如何更改Excel报表的背景颜色

时间:2019-07-03 12:19:15

标签: excel powershell

基本上,我正在使用此脚本运行特定文件夹中的所有.csv文件并将它们合并在一起。但是合并之后,我仍然想更改每个.csv文件的背景颜色。

到目前为止,我所获得的脚本无法做到这一点,因为我真的是PowerShell中的新手,所以无法弄清楚该怎么做。

# Get all the information from .csv files that are in the $IN_FILE_PATH skipping the first line:
$getFirstLine = $true

get-childItem "$IN_FILE_PATH\*.csv" | ForEach {
    $filePath = $_

    $lines = $lines = Get-Content $filePath
    $linesToWrite = switch ($getFirstLine) {
        $true { $lines }
        $false { $lines | Select -Skip 1 }
    }

    # Import all the information... and tranfer to the new workbook.
    $Report_name = $((get-date).ToString("yyyy.MM.dd-hh.mm"))

    $getFirstLine = $false
    Add-Content "$OUT_FILE_PATH\Report $Report_Name.csv" $linesToWrite
}

例如.csv文件具有以下模式:

Name        Age

Richard     18
Carlos      20
Jonathan    43
Mathew      25

请确保了解Richard(18岁)和Carlos(20岁)来自filenumber1.csv-Jonathan(43岁)和Mathew(25岁)来自filenumber2.csv < / p>

我希望卡洛斯(Carlos)和理查德(Richard)的行具有白色背景,而乔纳森(Jonathan)和马修(Mathew)的行为灰色。这样一来,用白灰色白灰色将其除以每个文件即可。 我试图使最终查看报告更加友好-以确保您可以使文件之间的分隔更加清晰。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

正如Vivek Kumar Singh在评论中所述,.csv不包含任何格式设置选项。建议改为使用Excel文件。为此,我知道并使用的最佳模块是ImportExcel

设置格式的代码如下(受this thread启发):

$IN_FILE_PATH = "C:\SO\56870016"
# mkdir $IN_FILE_PATH
# cd $IN_FILE_PATH
# rm out.xlsx

# Define colors
$colors = "White", "Gray"

# Initialization
$colorsTable = @()
$data = @()
$n = 0

Get-ChildItem "$IN_FILE_PATH\*.csv"  | % {
  $part = Import-Csv $_
  $data += $part
  for ($i = 0; $i -lt ($part).Count; $i++) {
    $colorsTable += $colors[$n%2]
  }
  $n++
}


$j = 0
$data | Export-Excel .\out.xlsx -WorksheetName "Output" -Append -CellStyleSB {
  param(
    $workSheet,
    $totalRows,
    $lastColumn
  )        

  foreach($row in (2..$totalRows )) {
    # The magic happens here
    # We set colors based on the list which was created while importing
    Set-CellStyle $workSheet $row $LastColumn Solid $colorsTable[$j]
    $j++
  }        
}

希望代码中的注释有助于您更好地了解代码中正在发生的事情。