如何使用C#填充I单元格A1:A5的颜色?

时间:2011-02-02 05:26:03

标签: c# excel office-interop range

我有以下代码:

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

我想用一种颜色填充这个细胞范围。我已经尝试过:

System.Drawing.Color = "yellow"

但它抛出了一个异常,即需要一个对象引用。

如何修复我的代码以用颜色填充这些单元格?

3 个答案:

答案 0 :(得分:10)

试试这个:

chartRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);

答案 1 :(得分:5)

上面显示的代码问题是您无法将字符串值“Yellow”分配给System.Drawing.Color类型。相反,标准颜色作为只读属性公开,您可以通过Color结构进行访问。完整列表在documentation

中给出

Excel互操作使事情变得复杂一些,因为您需要将这些颜色值转换为OLE颜色。您可以使用ColorTranslator.ToOle method

执行此操作

因此,例如,您需要将以下行添加到原始代码中:

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

有关详细信息,请参阅MSDN上的this how-to article

答案 2 :(得分:0)

您直接将颜色分配给Excel互操作无法理解的工作表变量。

因此,您需要使用 colorTranslator.ToOle 方法将这些颜色值转换为OLE值,或使用Excel对其进行着色。提供了两种方式。

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

否则

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

此处 xlWorksheet 是对象excel Worksheet对象。

get_Range 需要2个变量一个起始单元格而另一个是结束单元格。

因此,如果您指定两个值相同,则只有一个单元格被着色。

xlWorkSheet.cells [row,column] 用于指定单元格。

System.Drawing.ColorTranslator.ToOle(SystemDrawing.Color.Green)用于以OLE格式定义颜色。

Excel.XlRgbColor.rgbRed 是一种着色细胞的卓越方式 此方法可以访问大量颜色,可在此处找到list of colors