Ответ 1
Попробуйте что-нибудь подобное
ws.Cells[row, clmn].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
Я использую С# для окраски определенных ячеек файла 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;
... для цветных ячеек, но это не работает. Может ли кто-нибудь помочь мне?
Попробуйте что-нибудь подобное
ws.Cells[row, clmn].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
Ячейки [row, clmn] - это диапазон, поэтому вам не нужно вызывать get_Range(), и есть перечисление, которое вы можете использовать для цветов.
ws.Cells[row, clmn].Interior.Color = XlRgbColor.rgbBlack;
Если вы хотите установить цвет по индексу цвета, вам необходимо использовать этот метод:
Cells[row, col].Interior.ColorIndex = 36;
Вы можете покрасить ячейку или весь столбец или целую строку.
Следующий код поможет вам.
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
Убедитесь, что вы используете:
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).
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.