用C#更改单元格的背景

时间:2011-05-19 13:22:22

标签: c# .net excel cell worksheet

我正在使用C#开发一个程序来操作Excel文档,我正在使用

    Microsoft.Office.Interop.Excel._Worksheet worksheet;

当我向x,y单元格插入内容时,我使用:

worksheet.Cells[x, y] = "something";

现在我想知道是否可以从C#更改Cells [x,y]的backColor

谢谢。

4 个答案:

答案 0 :(得分:32)

尝试

worksheet.Cells[x, y].Interior.Color

您将无法直接使用.Net中的颜色,它们需要翻译。

建议使用以下(显然从银色改变):

worksheet.Cells[x, y].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Silver);

答案 1 :(得分:2)

是的,您可以为单元格或整列或整行着色。

以下代码可以帮助您。

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

答案 2 :(得分:0)

你可以这样做:

private static readonly int DEL_PERF_FIRST_DATA_ROW = 10;
private static readonly int SUN_ORDERS_COLUMN = 3;
private static readonly int TUE_ORDERS_COLUMN = 5;
private static readonly int THU_ORDERS_COLUMN = 7;
private static readonly int SAT_ORDERS_COLUMN = 9;
private static Color ALTERNATE_WEEKDAY_COLUMNS_COLOR = Color.LightGray;
. . .
int curRow = DEL_PERF_FIRST_DATA_ROW;

(每次将一行写入工作表时,curRow会增加。)

// Pale Violetize (light gray, actually) Sun, Tues, Thurs, and Saturday columns
var sundayColumnRange = _xlSheetDelPerf.Range[_xlSheetDelPerf.Cells[DEL_PERF_FIRST_DATA_ROW, SUN_ORDERS_COLUMN],_xlSheetDelPerf.Cells[curRow - 1, SUN_ORDERS_COLUMN]];
sundayColumnRange.Interior.Color = ALTERNATE_WEEKDAY_COLUMNS_COLOR;

var tuesdayColumnRange = _xlSheetDelPerf.Range[_xlSheetDelPerf.Cells[DEL_PERF_FIRST_DATA_ROW, TUE_ORDERS_COLUMN],_xlSheetDelPerf.Cells[curRow - 1, TUE_ORDERS_COLUMN]];
tuesdayColumnRange.Interior.Color = ALTERNATE_WEEKDAY_COLUMNS_COLOR;

var thursdayColumnRange = _xlSheetDelPerf.Range[_xlSheetDelPerf.Cells[DEL_PERF_FIRST_DATA_ROW, THU_ORDERS_COLUMN],_xlSheetDelPerf.Cells[curRow - 1, THU_ORDERS_COLUMN]];
thursdayColumnRange.Interior.Color = ALTERNATE_WEEKDAY_COLUMNS_COLOR;

var saturdayColumnRange =_xlSheetDelPerf.Range[_xlSheetDelPerf.Cells[DEL_PERF_FIRST_DATA_ROW, SAT_ORDERS_COLUMN], _xlSheetDelPerf.Cells[curRow - 1, SAT_ORDERS_COLUMN]];
saturdayColumnRange.Interior.Color = ALTERNATE_WEEKDAY_COLUMNS_COLOR;

答案 3 :(得分:0)

对于想要将十六进制颜色设置为背景的任何人都可以使用:

worksheet.get_Range("A1", "F1").Interior.Color = ColorTranslator.FromHtml("#52b69a");
相关问题