Окраска клеток excel

Я использую С# для окраски определенных ячеек файла excel. Я использую:

Application excel = new Application();
Workbook wb = excel.Workbooks.Open(destPath);
 Worksheet ws = wb.Worksheets[1];
 ws.get_Range(ws.Cells[row, clmn]).Cells.Interior.Color = 36;

... для цветных ячеек, но это не работает. Может ли кто-нибудь помочь мне?

Ответ 1

Попробуйте что-нибудь подобное

ws.Cells[row, clmn].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)

Ответ 2

Ячейки [row, clmn] - это диапазон, поэтому вам не нужно вызывать get_Range(), и есть перечисление, которое вы можете использовать для цветов.

ws.Cells[row, clmn].Interior.Color = XlRgbColor.rgbBlack;

Ответ 3

Если вы хотите установить цвет по индексу цвета, вам необходимо использовать этот метод:

    Cells[row, col].Interior.ColorIndex = 36;

Ответ 4

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

Следующий код поможет вам.

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

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

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

Следующий код - это способ, которым я определял рабочий лист excel.

Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range xlwidthadjust; //used this to adjust width of columns
object misValue = System.Reflection.Missing.Value;

xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

с этим кодом я уверен, что вы не получите это исключение Исключение из HRESULT: 0x800A03EC

Ответ 5

Убедитесь, что вы используете:

using Excel = Microsoft.Office.Interop.Excel;

Если у вас есть переменная для диапазона, который вы хотите изменить, используйте:

chartRange = xlWorkSheet.get_Range("a5", "a8");    
chartRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);

Если вы хотите просто изменить цвет конкретной ячейки, используйте:

xlWorkSheet.Cells[row, col].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);

... где "row" - номер строки, а "col" - номер столбца, присвоенный указанным столбцам (начиная с 1).

Ответ 6

Exception from HRESULT: 0x800A03EC

Решение. Измените misValue на sheet1, sheet2 или sheet3.

xlWorkBook = xlApp.Workbooks.Add("sheet1"); 

Это работает для меня. system.reflaction.missing.value что это было, он не связан с Excel.workbooks.add, полученным из значения по умолчанию файла Excel. Когда вы создаете файл Excel, листы по умолчанию: sheet1, sheet2 и sheet3.