Главная страница
    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.48 MB
Время: 0.049 c
2-1175816300
Чайник
2007-04-06 03:38
2007.04.29
Что это: Unsatisfied forward or external declaration: P1202_AdsP


15-1175480857
Slider007
2007-04-02 06:27
2007.04.29
С днем рождения ! 1 апреля


15-1175158476
Альберт
2007-03-29 12:54
2007.04.29
Уменьшить размер EXE


3-1171286284
bafy
2007-02-12 16:18
2007.04.29
Ошибка при вызове метода OpenDatabase


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский