Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с Excel


Neket ©   (2007-04-12 12:25:00) 

Подскажите пожалуйста где можно почитать про полноценную работу с  Excel документом с помощью DELPHI. В частности интересует как програмно создать объедененную ячейку. Раскрасить её. Нарисовать табличку и т.д.
P.S.
Заодно интересует. Как можно создавать  Excel документ в Delphi со встроенный VB скриптом.


Neket   (2007-04-13 10:32:00) [1]

Все разобрался...
Кому интересно то это делается так.
XL.Range['J7','BF7'].Select;
XL.selection.Orientation:=xlUpward;


Neket   (2007-04-13 10:08:00) [2]

Да Rezya но это нада сделать програмно. А как? я не знаю :-)


TIF   (2007-04-13 10:05:00) [3]

Ну и там его поворачиваешь на тот угол который необхдимо.

да, в отличие от ворда


Rezya   (2007-04-13 10:01:00) [4]

В  Excel это задается через формат ячеек->Выравниване->Ориентация текста.
Ну и там его поворачиваешь на тот угол который необхдимо.


Megabyte   (2007-04-13 09:58:00) [5]

Хз. Если знаешь, как сделать в самом Excel, то запиши макрос и посмотри..


Neket   (2007-04-13 09:34:00) [6]

Ещё вопросик возник.
А как задать формат ячейки так, чтобы текст в ней был не слева на право на снизу вверх.


Neket   (2007-04-12 17:50:00) [7]

Аааааа вот он как... А я блин уже час мучаюсь. Не могу понять. Спасибо


Megabyte   (2007-04-12 17:39:00) [8]

//окантовка названий полей
...
for j := 1 to 4 do
Sheet.Cells[4, i+1].Borders[j].LineStyle := 1;

j := от 1 до 4, четыре стороны ячейки.
свойство LineStyle - тип линии.


Neket   (2007-04-12 16:49:00) [9]

Ещё вопросик возник.

XL:= CreateOleObject('Excel.Application');
XL.Workbooks.Add;
XL.Range['A1:AE1'].Select;
XL.Selection.Borders.Weight:=2;


Тем самым мы окрашиваем все стороны прямоугольника всех ячеек тонкой линией. А как горизонтальные линии окрасить тонкой линиией а вертикальные толстой?


Neket   (2007-04-12 15:06:00) [10]

Спасибо... Очень помог.


Megabyte   (2007-04-12 14:34:00) [11]

var
 otchet, WorkBook, Sheet: Variant;
...
otchet := CreateOleObject('Excel.Application'); //объект
     otchet.SheetsInNewWorkbook := 1;
     WorkBook := otchet.WorkBooks.Add; //рабочий док-т Excel
     Sheet:= WorkBook.WorkSheets[1]; //страница
     //установки заголовка отчета
       Sheet.Cells[1, 2].font.size := 15;
       Sheet.Cells[2, 2].font.size := 13;
       Sheet.Cells[1, 2].font.bold := true;
       Sheet.Cells[2, 2].font.italic := true;
       Sheet.Cells[1, 2].Value := HeaderOtchet;
       Sheet.Cells[2, 2].Value := date;
       Sheet.columns[2].ColumnWidth := 25;
       Sheet.columns[4].NumberFormat := '@';
       Sheet.columns[5].NumberFormat := '@';
     //окантовка названий полей
       for i := 1 to fOtchetDataSet.FieldCount do //fOtchetDataSet - Набор Данных
       begin
         Sheet.Cells[4, i+1].font.size := 12;
         Sheet.columns[i+2].ColumnWidth := 15;
         Sheet.columns[i+2].HorizontalAlignment := xlleft;
         for j := 1 to 4 do
           Sheet.Cells[4, i+1].Borders[j].LineStyle := 1;
       end;
     //вывод названий полей
       for i := 0 to fOtchetDataSet.FieldCount-1 do
       begin
       //установки строки названий
         Sheet.Range['c4'].Rowheight := 20;
         Sheet.Cells[4, i+2].font.bold := true;
       //заполнение названий полей
         Sheet.Cells[4, i+2].Value := fOtchetDataSet.Fields.Fields[i].FieldName;
       end;
       fOtchetDataSet.First;
       //2-й цикл выгрузки данных в Excel
       For i := 1 to  fOtchetDataSet.RecordCountFromSrv do
       begin
         for k := 0 to fOtchetDataSet.FieldCount-1 do
         begin
           Sheet.Cells[i+4, k+2] :=  fOtchetDataSet.FieldList.Fields[k].Value;
           if fOtchetDataSet.FieldList.Fields[1].Value = '???' then
         begin
           for j := 1 to fOtchetDataSet.FieldCount do
             Sheet.Cells[i+4, j+1].font.bold := true;
         end;
         end;
         fOtchetDataSet.Next;
       end;

       Workbook.SaveAs(OtchetFullName, xlNormal, '', '', false, false);
...
   WorkBook.close;
   otchet := Unassigned;


Neket   (2007-04-12 14:02:00) [12]


> Где почитать, не скажу, могу образец кода дать?


Давай.


Megabyte   (2007-04-12 13:33:00) [13]


> Подскажите пожалуйста где можно почитать про полноценную работу с  Excel документом с помощью DELPHI. В частности интересует как програмно создать объедененную ячейку. Раскрасить её. Нарисовать табличку и т.д.

1) Все команды VBA(макросы в Excel) создаются с помощью "записать макрос" в самом Excel и интерпретируются под Дельфи(ну там = заменить на := ).
2)В Дельфи c Excel работаешь как с COM-сервером.

Где почитать, не скажу, могу образец кода дать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо