如何使用C#填充I单元格A1:A5的颜色?
我有以下代码:
Excel.Range chartRange; chartRange = xlWorkSheet.get_Range("A3", "R3");
我想用一种颜色填充这个单元格的范围。 我已经尝试过:
System.Drawing.Color = "yellow"
但它抛出了一个exception,需要一个对象引用。
我怎样才能修复我的代码来填充这些单元格的颜色?
尝试这个:
chartRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);
上面显示的代码的问题是,您不能将string值“黄色”分配给System.Drawing.Color
types。 相反,标准颜色作为只读属性显示 ,您可以通过Color
结构访问它们。 完整列表在文档中给出。
Excel互操作使事情变得复杂一些,因为您需要将这些颜色值转换为OLE颜色。 您可以使用ColorTranslator.ToOle
方法执行此操作。
因此,例如,您需要将以下行添加到您的原始代码:
Excel.Range chartRange; chartRange = xlWorkSheet.get_Range("A3", "R3"); chartRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);
有关更多信息,请参阅MSDN上的这篇how-to文章 。
您直接将颜色分配给Excel互操作无法理解的工作表variables。
因此,您需要使用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工作表对象的对象。
get_Range需要2个variables,一个起始单元,另一个是终止单元。
所以如果你指定两个值相同,那么只有一个单元格被着色。
xlWorkSheet.cells [row,column]用来指定一个单元格。
System.Drawing.ColorTranslator.ToOle(SystemDrawing.Color.Green)用于定义OLE格式的颜色。
Excel.XlRgbColor.rgbRed是一个Excel单元格着色的方法这种方法可以访问大量的颜色,可以在这里find颜色列表