基本上,我正在使用此脚本运行特定文件夹中的所有.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)的行为灰色。这样一来,用白灰色白灰色将其除以每个文件即可。 我试图使最终查看报告更加友好-以确保您可以使文件之间的分隔更加清晰。
有什么想法吗?
答案 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++
}
}
希望代码中的注释有助于您更好地了解代码中正在发生的事情。