需要在PowerShell脚本中使用ClosedXML设置单元格背景颜色

时间:2016-07-04 01:49:31

标签: powershell closedxml

我使用PowerShell 3和ClosedXML将文件信息写入excel工作表。在其中一个单元格中,我需要将背景颜色设置为浅蓝色(矢车菊蓝色或RGB中的219,229,249)。我尝试了各种方法,到目前为止,没有运气。根据ClosedXML站点,我应该能够引用XLColor对象。我也尝试了许多设置背景颜色的变体。

$cell.Style.Fill.BackgroundColor.Color(219, 229, 249)

或     $ cell.Style.Fill.SetBackgroundColor(6) 要么     $ cell.Style.Fill.SetBackgroundColor(XLColor.Blue)

任何建议都将不胜感激。大多数例子都是C#,它们通常可以无缝地翻译,但这是一个我没有运气的想法。

由于 里克安德森

1 个答案:

答案 0 :(得分:2)

更新(7月4日上午12:15) 我破解了这个秘密,这也有助于在Borders工作,并且肯定会帮助其他项目。

处理颜色的技巧是定义一个类型为ClosedXML.Excel.XLColor的变量,同时分配你想要的值。您可以在指定颜色时使用多个选项:

$SomeColor = [ClosedXML.Excel.XLColor]::AirForceBlue #Pick a color from the list
$SomeColor = [ClosedXML.Excel.XLColor]::FromArgb() #RGB
$SomeColor = [ClosedXML.Excel.XLColor]::FromColor() #System.Drawing.Color
$SomeColor = [ClosedXML.Excel.XLColor]::FromHtml() #HTML Color
$SomeColor = [ClosedXML.Excel.XLColor]::FromIndex() #numeric index of the colors
$SomeColor = [ClosedXML.Excel.XLColor]::FromKnownColor() #System.Drawing.Color
$SomeColor = [ClosedXML.Excel.XLColor]::FromName() #String name of color
$SomeColor = [ClosedXML.Excel.XLColor]::FromTheme() #XLThemeColor

以下是使用FromArgb选项的示例:

#Define the color variables I need. In this case a color for the hash column and a 
#color for the Title/Header row.
$HashColor = [ClosedXML.Excel.XLColor]::FromArgb(219, 229, 249)
$TitleColor = [ClosedXML.Excel.XLColor]::FromArgb(221, 217, 195)

. . . Do some stuff

#Format the Header Row
$headerRange = $worksheetObject.Range("a1","d1")
$headerRange.Style.Font.Bold=$True
$cell = $worksheetObject.Range($headerRange)
$cell.Style.Fill.BackgroundColor =$TitleColor

. . . Do some stuff

#Write file information row
$row++
$worksheetObject.Cell($row,1).Value=$File.Name
$worksheetObject.Cell($row,2).Value=$FileType
$worksheetObject.Cell($row,3).Value=$strFileLen
$stringRow = $row.ToString()
$FirstCell = "A" + $stringRow
$LastCell  = "D" + $stringRow
$Range     = $FirstCell + ":" + $LastCell
$cell = $worksheetObject.Range($Range)
$cell.Style.Fill.BackgroundColor =$HashColor

如果你需要使用边框,你也可以直接使用它。

$cell.Style.Border.OutsideBorder = [ClosedXML.Excel.XLBorderStyleValues]::Thin
$cell.Style.Border.InsideBorder = [ClosedXML.Excel.XLBorderStyleValues]::Thin

您也可以使用相同的内容来更改边框颜色

$cell.Style.Border.BottomBorderColor = [ClosedXML.Excel.XLColor]::CornflowerBlue

这不是最清晰的解决方案,但找出这个方法将有助于PowerShell中未来的ClosedXML工作。希望这可以帮助那些人。