How can fill I cells A1:A5 with a color using C#?

前端 未结 3 1990
醉酒成梦
醉酒成梦 2020-12-21 19:47

I have the following code:

Excel.Range chartRange;
chartRange = xlWorkSheet.get_Range(\"A3\", \"R3\");

I want to fill this range of cells w

相关标签:
3条回答
  • 2020-12-21 20:10

    You are directly assigning the color to the worksheet variable which Excel interop cant understand.

    So you need to convert those color values to OLE values by using colorTranslator.ToOle method or use Excel way of coloring it. Provided both the ways.

    xlWorkSheet.get_Range(xlWorkSheet.Cells[2, 2], xlWorkSheet.Cells[2, 4]).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Green);
    

    else

    xlWorkSheet.get_Range(xlWorkSheet.Cells[2, 3], xlWorkSheet.Cells[2, 3]).Interior.Color = Excel.XlRgbColor.rgbRed;
    

    Here xlWorksheet is the object excel Worksheet object.

    get_Range takes 2 variable one start cell and other is end cell.

    so if you specify both the values same then only one cell is colored.

    xlWorkSheet.cells[row, column] is used to specify a cell.

    System.Drawing.ColorTranslator.ToOle(SystemDrawing.Color.Green) is used to define the color in OLE format.

    Excel.XlRgbColor.rgbRed is a excel way of coloring the cells This method gives access to large number of colors which can be found here list of colors

    0 讨论(0)
  • 2020-12-21 20:23

    Try this:

    chartRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);
    
    0 讨论(0)
  • 2020-12-21 20:24

    The problem with your code shown above is that you can't assign the string value "Yellow" to the System.Drawing.Color type. Instead, the standard colors are exposed as read-only properties that you can access through the Color structure. The full list is given in the documentation.

    Excel interop makes things a bit more complicated, because you need to convert those color values to OLE colors. You do this using the ColorTranslator.ToOle method.

    So, for example, you need to add the following line to your original code:

    Excel.Range chartRange;
    chartRange = xlWorkSheet.get_Range("A3", "R3");
    chartRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);
    

    For more information, also consult this how-to article on MSDN.

    0 讨论(0)
提交回复
热议问题