Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Работа с Excel   Найти похожие ветки 

 
Neket   (2007-04-12 12:25) [0]

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


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


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

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

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


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


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


Давай.


 
Megabyte ©   (2007-04-12 14:34) [3]

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 15:06) [4]

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


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

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

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


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


 
Megabyte ©   (2007-04-12 17:39) [6]

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

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


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

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


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

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


 
Megabyte ©   (2007-04-13 09:58) [9]

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


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

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


 
TIF ©   (2007-04-13 10:05) [11]

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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
4-1165212307
Krab12345
2006-12-04 09:05
2007.04.29
Продолжение темы "Сокет"


1-1173026527
Bogdan1024
2007-03-04 19:42
2007.04.29
Крутящийся контрол


4-1164690019
Wolfram
2006-11-28 08:00
2007.04.29
Как вызвать стандартное приглашение к перезагрузке?


15-1175328227
VirEx
2007-03-31 12:03
2007.04.29
сжатие траффика, как настроить MirandaIM (ICQ,IRC,MRA) для CProxy


3-1171031359
ANB
2007-02-09 17:29
2007.04.29
(Оракл) Как заставить вьюху слопать нужный мне тип ?