Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.042 c
15-1175593412
Megabyte
2007-04-03 13:43
2007.04.29
Задержка в bat-файле


15-1175481818
SerJaNT
2007-04-02 06:43
2007.04.29
Проблема с картой памяти


3-1171269054
Ламерок
2007-02-12 11:30
2007.04.29
Как узнать сушествует ли запись в ячейке поля?


8-1155648360
Deka
2006-08-15 17:26
2007.04.29
Подскажите по DSPack. Разбираться нет времени - проект горит.


11-1156687886
Александра
2006-08-27 18:11
2007.04.29
KOLListBox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский