Изменить фон ячеек с C # - PullRequest
12 голосов
/ 19 мая 2011

Я разрабатываю программу на C # для работы с документом Excel, и я использую

    Microsoft.Office.Interop.Excel._Worksheet worksheet;

Когда я вставляю что-то в ячейку x, y, я использую:

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

Теперь я хочу знать, возможно ли изменить backColor клеток [x, y] с C #.

Спасибо.

Ответы [ 3 ]

32 голосов
/ 19 мая 2011

Попробуйте

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

Вы не сможете использовать цвета в .Net напрямую, для них потребуется перевод.

Рекомендуется использовать следующее (очевидно, изменитьиз серебра):

worksheet.Cells[x, y].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Silver);
2 голосов
/ 20 марта 2017

Да, вы можете покрасить ячейку или весь столбец или всю строку.

Код ниже поможет вам.

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 [строка, столбец] используется для указания ячейки.

System.Drawing.ColorTranslator.ToOle (SystemDrawing.Color.Green) используется для определения цвета в формате OLE.

Excel.XlRgbColor.rgbRed - превосходный способ окраски клеток Этот метод дает доступ к большому количеству цветов, которые можно найти здесь список цветов

0 голосов
/ 02 декабря 2015

Вы можете сделать это так:

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;
...