Как изменить цвет фона отчета Excel - PullRequest
2 голосов
/ 03 июля 2019

По сути, я использую этот сценарий для запуска всех файлов .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

Убедитесь, что понимаете, что Ричард (18 лет) и Карлос (20 лет) из filenumber1.csv - Джонатан (43 года) и Мэтью (25 лет) из filenumber2.csv

Я хочу, чтобы строки Карлоса и Ричарда были на белом фоне, а строки Джонатана и Мэтью - серыми. Так что это повторяется в бело-серо-бело-сером делении его на каждый файл. Я пытаюсь сделать его более удобным для просмотра отчета в конце - чтобы вы могли сделать это разделение от файла к файлу более четким.

Есть идеи?

1 Ответ

0 голосов
/ 03 июля 2019

Как отметил Вивек Кумар Сингх в комментариях, .csv не содержит параметров форматирования.Вместо этого рекомендуется работать с файлом Excel.И для этой цели лучший модуль, который я знаю и использую, - ImportExcel .

. Код для настройки форматирования приведен ниже (на основе этой темы ):

$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++
  }        
}

Надеемся, что комментарии в коде помогут вам лучше понять, что происходит в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...