2011-02-02 77 views
1

我有以下代码:如何用C#填充I颜色的单元格A1:A5?

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

我想填补这一范围细胞与一种颜色。我已经尝试过:

System.Drawing.Color = "yellow" 

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

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

回答

9

试试这个:

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

与上面显示你的代码的问题是,你不能将字符串值“黄色”分配给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

+0

Oh.Thanks !!!!它运作良好。 – Harikasai 2011-02-04 04:22:49

0

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

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

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工作表对象。

get_Range需要2个可变的启动单元,另一个是末端单元。

所以如果你指定两个值相同,那么只有一个单元格被着色。

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

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

Excel.XlRgbColor.rgbRed是着色单元 的Excel的方法这种方法可以访问大量的颜色,可以在这里找到list of colors

相关问题