Дежурный стрелочник
Группа: Участник
Сообщений: 73
|
Дорогие друзья. Встретился с очередной проблемой работы с Excel.
А точнее: нужно, чтобы ячейки выделялись и в добавок разными линиями(где толще, где тоньше). Дабы не быть голословным рисую.
void __fastcall Excel_Class::toExcelCell(int Row,int Column, AnsiString data,int list,int col,int typ_vid,int font_hi,int ramka,float size_ramka_whidth,float size_ramka_hight)
{
Application->ProcessMessages();
Sh=App.OlePropertyGet("WorkSheets").OlePropertyGet("Item",list);
Variant cur = Sh.OlePropertyGet("Cells", Row,Column);
cur.OlePropertySet("NumberFormat","@");
cur.OlePropertySet("Value", data.c_str());
Variant Rang;
AnsiString aa,aa_Col,aa_Row;
if(Column<27){ char aaa=64+Column;
aa_Col=String(aaa);
aa_Row=IntToStr(Row);
aa=String(aaa)+IntToStr(Row);
}
else
{char aaa=64+Column-26;
aa="A"+String(aaa)+IntToStr(Row);
aa_Col="A"+String(aaa);
aa_Row=IntToStr(Row);
}
Sh.OlePropertyGet("Columns",(aa_Col+":"+aa_Col).c_str()).OlePropertySet("ColumnWidth",size_ramka_whidth);
Sh.OlePropertyGet("Rows",(aa_Row+":"+aa_Row).c_str()).OlePropertySet("RowHeight",size_ramka_hight);
Rang=Sh.OlePropertyGet("Range",aa.c_str());
Rang.OlePropertyGet("Font").OlePropertySet("Size",font_hi);
if (typ_vid==1) Rang.OlePropertyGet("Font").OlePropertySet("Bold",true);
switch (col) {
case 1 : Rang.OlePropertyGet("Font").OlePropertySet("ColorIndex",3);break;
case 2 : Rang.OlePropertyGet("Font").OlePropertySet("ColorIndex",5);break;
}
for(int i=1;i<=4;i++)
{
Rang.OlePropertyGet("Border").OlePropertyGet("Item",i).OlePropertySet("LineStyle",1);
}
}
Вот так выглядитосновная функция вывода, но нас интересует то что происходит в самом цикле , внизу (поскольку остальное все работает). Так вот онсделан и выдержан в стиле документации представленной на сайте, однако, не пашет. Проц спускается к 0%, а поток вывода не прекращает заканчиваться. Кто знает как рисовать граници , плиссссс?
|