Исходники и листинги ::: Delphi ::: Отчеты в Excel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
  {
    Данный пример показывает каким образом можно вывести в эксель содержимое
   произвольного DataSet-а.
 
   Примечание:
   1. Любимая программа бухгалтера - эксель ;-) Поэтому советую в качестве report-а
   использовать его.
   2. Представленная методика хорошо подходит для вывода небольшого количества данных
   в ексель. Если необходимо вывести тысячи ячеек, то этот способ будет медленным. Помните,
   что каждое обращение(команда) к екселю из внешней программы заимает время.
   Если скорость критична и(или) данных много используете методы позволяющие передать
   данные одной пачкой ;-)
   Для вывода нескольких печатных страниц текста данный способ вполне подходит ;-)
  }
  type
    TForm1 = class(TForm)
      ...
      //Не забудьте поместить на форму эти компаненты
      ExcelApplication1: TExcelApplication;
      ExcelWorkbook1: TExcelWorkbook;
      ...
    end;
 
  ...
 
  procedure TForm1.exportToExcel(DataSet:TDataset);
  var Template,NewTemplate,ItemIndex:OleVariant;
  wb:_workbook;
  sheet: OleVariant;
  i,i2:integer;
  xSize,ySize:integer;
  begin
  Dataset.First;
    try
      Template := EmptyParam;
      NewTemplate := True;
      ItemIndex := 0;
      //Пробуем подключиться к екселю
      try
        ExcelApplication1.Connect;
      except
        MessageDlg('к Excel-ю не удалось подключиться ', mtError, [mbOk], 0);
        Abort;
      end;
      //делаем приложение видимым. По умолчанию его не видимое. %)
      ExcelApplication1.Visible[ItemIndex] := True;
      //Устанавливаем имя окна
      ExcelApplication1.Caption := 'Title label';
      Template := EmptyParam;
      NewTemplate := False;
      //Добавляем пустую книжку
      wb:=ExcelApplication1.Workbooks.Add(Template, ItemIndex);
      ExcelWorkbook1.ConnectTo(wb);
      //Получаем ссылку на первый лист книжки
      sheet:=wb.Sheets[1];
      //Итерируемся по колонкам
      for i:=0 to Dataset.FieldCount-1 do
        begin
        //выводим имя колонок
        sheet.cells[1,i+1].value:=Dataset.Fields[i].DisplayName;
        end;
      i2:=1;
      //Итерируемся по записям в Dataset-е
      While not(Dataset.eof) do
       begin
        inc(i2);
        for i:=0 to Dataset.FieldCount-1 do
          begin
           //выводим значение каждого поля записи
           sheet.cells[i2,i+1].value:= Dataset.Fields[i].Asstring;
          end;
       Dataset.Next;
       end;
     //Выполняем автовыравнивание по ширине
     sheet.Cells.Select;
     sheet.Columns.AutoFit;
     sheet.Range['A1'].select;
     xSize:=Dataset.FieldCount-1;
     ySize:=i2;
     //изменяем стиль бордюра ячеек в которые был осуществлен вывод данных
     sheet.Range['A1:'+chr(65+xSize)+inttostr(ySize)].Borders[$00000008].LineStyle:= $00000001;
     sheet.Range['A1:'+chr(65+xSize)+inttostr(ySize)].Borders[$0000000A].LineStyle:= $00000001;
     sheet.Range['A1:'+chr(65+xSize)+inttostr(ySize)].Borders[$00000007].LineStyle:= $00000001;
     sheet.Range['A1:'+chr(65+xSize)+inttostr(ySize)].Borders[$00000009].LineStyle:= $00000001;
     sheet.Range['A1:'+chr(65+xSize)+inttostr(ySize)].Borders[$0000000C].LineStyle:= $00000001;
     sheet.Range['A1:'+chr(65+xSize)+inttostr(ySize)].Borders[$0000000B].LineStyle:= $00000001;
     //выделяем жирным названия колонок
     sheet.Range['A1:'+chr(65+xSize)+'1'].font.bold:=true;
    except
      on E: Exception do
      begin
        //В случае ошибки выводим шибку и отконекчиваемся от экселя
        ShowMessage(E.Message);
        ExcelApplication1.Disconnect;
      end;
    end;
    //отконекчиваемся от экселя
        ExcelApplication1.Disconnect;
  end;
 
  procedure TForm1.Button1Click(Sender: TObject);
  begin
  //собственно вызов функции
  exportToExcel(IBTable1);
  end;
<<< Предыдущая работа

Вернуться в галерею исходников
Отчеты в Excel
Автор: Chronos
Город: Томск
Дата: 12.05.2006  09:22
Комментариев: 0
Просмотров: 592
Оценка: 4 (1|1|1|0|1) [0]

Вернуться на главную
Авторский комментарий к работе: Данный пример показывает каким образом можно вывести в эксель содержимое произвольного DataSet-а.
Вы не можете оценивать

КОММЕНТАРИИ К РАБОТЕ:
Нет комментариев