我使用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#,它们通常可以无缝地翻译,但这是一个我没有运气的想法。
由于 里克安德森
答案 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工作。希望这可以帮助那些人。