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

问题描述 投票:0回答:2

我正在使用 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#,通常翻译得非常无缝,但这是我没有运气弄清楚的一个。

谢谢 里克·安德森

powershell closedxml
2个回答
5
投票

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

处理颜色的技巧是定义一个 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 工作有很大帮助。希望这对那里的人有帮助。


0
投票

我需要使用 closeXML 设置水平和垂直对齐。 你有什么建议吗?

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.