отличная окраска клеток - PullRequest
10 голосов
/ 05 мая 2011

Я использую c # для окраски отдельных ячеек файла 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;

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

Ответы [ 6 ]

14 голосов
/ 05 мая 2011

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

ws.Cells[row, clmn].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
7 голосов
/ 05 мая 2011

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

ws.Cells[row, clmn].Interior.Color = XlRgbColor.rgbBlack;
5 голосов
/ 28 августа 2012

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

    Cells[row, col].Interior.ColorIndex = 36;
2 голосов
/ 20 марта 2017

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

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

xlWorkSheet.get_Range(xlWorkSheet.Cells[2, 2], xlWorkSheet.Cells[2, 4]).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Green);

else

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

1 голос
/ 19 сентября 2017

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

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

0 голосов
/ 02 июля 2017

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.

...