Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  164

•  TDictionary Custom Sort  3 338

•  Fast Watermark Sources  3 093

•  3D Designer  4 849

•  Sik Screen Capture  3 345

•  Patch Maker  3 554

•  Айболит (remote control)  3 660

•  ListBox Drag & Drop  3 015

•  Доска для игры Реверси  81 708

•  Графические эффекты  3 946

•  Рисование по маске  3 249

•  Перетаскивание изображений  2 630

•  Canvas Drawing  2 753

•  Рисование Луны  2 582

•  Поворот изображения  2 190

•  Рисование стержней  2 168

•  Paint on Shape  1 568

•  Генератор кроссвордов  2 236

•  Головоломка Paletto  1 767

•  Теорема Монжа об окружностях  2 231

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 057

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 475

•  Программа укладки плитки  1 216

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 366

•  HEX View  1 497

•  Физический маятник  1 358

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Создаем отчет в MS Excel



Автор: Archer

В этой маленькой статье описана простая и чисто практическая процедура выдачи отчета в Excel. Целью ее является то, чтобы даже самый неподготовленный читатель мог прямо в процессе чтения начать составлять отчет. Сейчас мы этот процесс разобьем на несколько шагов и разберем.

На этот раз для разнообразия обойдемся без стандартных компонентов. Действовать будем с помощью OleAutomation. Итак, приступим...

  1. Объявляем переменные:
    var
    wss: WideString;
    ExcelApp, Workbook, Range, Cell1, Cell2, VData : Variant;


  2. Теперь нам надо открыть Excel и создать в нем новую книгу для нашего отчета:
    ...
    begin
    ...
    ExcelApp:= CreateOleObject('Excel.Application');
    // открываем Excel
    ExcelApp.Application.EnableEvents:= false; // так будет быстрее
    ExcelApp.Visible:=False; // чтобы не маячил
    Workbook := ExcelApp.WorkBooks.Add; // создали чистую книгу

  3. На этом, собственно, подготовительная часть окончена, можем заносить в ячейки нужный текст. Тут есть два пути - работать с диапазонами ячеек или с каждой отдельно. Кто читал заметки по поводу работы с Word, помнит, что там был такой себе объект Range, который представлял из себя набор символов. Здесь он тоже есть, только теперь это набор ячеек. Точнее, прямоугольная область листа рабочей книги, для которой задается левая верхняя и правая нижняя ячейки. Для этого как раз введены переменные Cell1 и Cell2.

    Cell1 := WorkBook.WorkSheets[1].Cells[1, 1]; // левая верхняя ячейка
    Cell2 := WorkBook.WorkSheets[1].Cells[1, 1]; // правая нижняя
    Range:= WorkBook.WorkSheets[1].Range[Cell1, Cell2]; // создаем объект Range
    VData:=wss; // его "значение"
    Range.Value := VData; // теперь в первой ячейке книги у нас текст из wss

    В данном случае наш объект состоит из одной ячейки. Внимательный читатель наверняка подумал - а что будет, если левая верхняя и правая нижняя ячейки не совпадают между собой и для чего такое вообще? В принципе сразу всему диапазону ячеек можно присвоить в качестве содержимого массив вариантного типа, вроде бы при большом отчете так выходит быстрее. А можно просто перебрать ячейки в цикле:

    VData:=wss;
    WorkBook.WorkSheets[1].Cells[i, j].Value:=VData;


    Кроме того, использование объекта Range имеет преимущества с точки зрения форматирования текста. С его помощью можем отформатировать текст сразу целого диапазона ячеек, все очень похоже на Word. Несколько примеров:

    Range.Font.Bold:=1;
    Range.Font.Italic:=0;
    Range.Font.Size:=10;
    Range.Font.Color:=clNavy;


    Аналогичные свойства, конечно, присутствуют и у отдельных ячеек. Еще напоследок можем для элегантности подогнать ширину столбцов по содержимому:

    WorkBook.WorkSheets[1].Columns.Item[i].Autofit;

  4. А на этом, собственно, все. Остается только записать наш отчетец. Например:

    ff:='C:\test.xls';
    WorkBook.SaveAs(ff); // ff типа OleVariant
    ExcelApp.Quit; // выгрузили Excel


Ну вот и все. Никаких изысков тут не было, кому-то изложенное может даже показаться слишком прямолинейным. Но отчет мы сделали быстро и просто. Занесли в ячейки нужный текст, раскрасили и выделили его разными стилями для читабельности. А что еще нужно от отчета?:)





Похожие по теме исходники

Экспорт баз данных в Excel

Transfer Tables Excel-Access

Excel Films Lister

Work with Word and Excel

 



Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте