C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Excel, как нарисовать рамки у ячейки
grebenyk
  Отправлено: 03.05.2005, 20:16


Дежурный стрелочник

Группа: Участник
Сообщений: 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%, а поток вывода не прекращает заканчиваться. Кто знает как рисовать граници , плиссссс?

Отредактировано grebenyk — 04/05/2005, 18:47
grebenyk
Отправлено: 12.05.2005, 20:12


Дежурный стрелочник

Группа: Участник
Сообщений: 73



Небольшая ошибочка бывает фатальной:
Rang.OlePropertyGet("Border").OlePropertyGet("Item",i).OlePropertySet("LineStyle",1);
А надо :"Borders"

Вернуться в Технологии COM/DCOM, ActiveX