Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Заливка ячеек Excel

407
20 июля 2005 года
shupik
160 / / 15.09.2004
Такой нюанс - вывожу в лист Excel данные следующим образом:
COleSafeArray sa;
sa.Create(VT_VARIANT, 2, dwElements);
_Application oApp;
oApp.CreateDispatch("Excel.Application");
if (!oApp)
{
AfxMessageBox("Невозможно запустить Excel.");
return;
}

Workbooks oBooks;
oBooks = oApp.GetWorkbooks();
_Workbook oBook;
oBook = oBooks.Add(vOpt);


Worksheets oSheets;
oSheets = oBook.GetWorksheets();
_Worksheet oSheet;
Range oRange;

Font oFont;
Interior oInterior;
Borders oBorders;
oSheet = oSheets.Add(vOpt,vOpt, COleVariant(long(1)),COleVariant(long(0xffffefb9)));

oSheet.SetName("Рабочий лист");
oSheet.Activate();
oRange = oSheet.GetRange(COleVariant("A1"),COleVariant("M1"));
oInterior = oRange.GetInterior();
oInterior.SetColorIndex(COleVariant((short)2));
Таким образом, я имею возможность задать для определенного диапазона ячеек тип границы, цвет шрифта, заливку и т.п. Сложность вот в чем - дальше я вывожу построчно некий массив и мне нужно отдельные строки "раскрашивать" по разному. Вот пример:
for(lRow=0;lRow<=NumRows-1;lRow++)
{
value_Type=myType.GetAt(lRow);
value_Mark=myMark.GetAt(lRow);
value_Number=myNumber.GetAt(lRow);
value_Weight=myWeight.GetAt(lRow);
value_Layer=myLayer.GetAt(lRow);
value_W=myW.GetAt(lRow);
double dw=atof(value_W);
value_A=myA.GetAt(lRow);
double da=atof(value_A);
value_V=myV.GetAt(lRow);
double dv=atof(value_V);
value_S=myS.GetAt(lRow);
double ds=atof(value_S);

index[0] = lRow;


index[1] = 0;
sa.PutElement(index, (COleVariant)value_Mark);

index[1] = 2;
sa.PutElement(index, (COleVariant)value_Number);
index[1] = 3;
sa.PutElement(index, (COleVariant)value_Layer);
index[1] = 4;
sa.PutElement(index, (COleVariant)value_Weight);
index[1] = 5;
sa.PutElement(index, (COleVariant)value_Type);
index[1] = 6;
sa.PutElement(index, (COleVariant)dw);
index[1] = 7;
sa.PutElement(index, (COleVariant)da);
index[1] = 8;
sa.PutElement(index, (COleVariant)dv);
index[1] = 9;
sa.PutElement(index, (COleVariant)ds);

}
Скажем, нужно, чтобы на lRow=8 цвет строки стал красным, а все остальные остались залиты цветом по умолчанию (определенным выше). Как это можно реализовать? Какой-то ключ ввести можно, но как на ходу интерпретировать цвет заливки? Я же не знаю, в какую именно ячейку в этот момент зашел цикл? Подскажите, пожалуйста, если кто в курсе.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог