Показать сообщение отдельно
  #1  
Старый 22.10.2015, 00:09
kucher kucher вне форума
Прохожий
 
Регистрация: 16.09.2015
Сообщения: 15
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Экспорт Отчётов в Excel из ADOQuery

МОЖЕТ КТО_НИБУДЬ СТАЛКИВАЛСЯ!
имеется такой код для создания отчётов чисто по таблице!
а как сделать универсальный (ЕСЛИ ЭТО ВООБЩЕ ВОЗМОЖНО) экспорт отчётов по ЗАПРОСАМ ADOQuery
ВОТ САМ КОД
Код:
procedure TfMain.Button9Click(Sender: TObject);
Var
XLApp,Sheet,Colum:Variant;
index,i:integer;
begin
    XLApp:=CreateOLEObject('Excel.Application'); //Строка создаёт объект Excel и записывает его в переменную
    XLApp.Visible:=true; //объект видимый EXcel
    XLApp.Workbooks.Add(-4167); //Excel состоит из книг (страниц), которые мы добавляем.
    //Число - константа, менять нельзя
 
    //Функция, которая создаёт OLE-объекты позволяет наладить связь с другим приложением
    XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
    Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
 
   //Ширина столбцов
    Colum.Columns[2].ColumnWidth:=30;
    Colum.Columns[3].ColumnWidth:=20;
    Colum.Columns[4].ColumnWidth:=20;
    Colum.Columns[5].ColumnWidth:=20;
    Colum.Columns[6].ColumnWidth:=20;
 
    Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows; //Переносим указатель на строки
    Colum.Rows[2].Font.Bold:=true;   //Меняется шрифт
    Colum.Rows[1].Font.Bold:=true;
    Colum.Rows[1].Font.Color:=clRed;  //Цвет строки
    Colum.Rows[1].Font.Size:=14;      //Размер шрифта
 
    Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт']; //Указатель на лист
    Sheet.Cells[1,2]:='Заказы'; // Название таблицы
    Sheet.Cells[2,1]:='ИдКлиента';
    Sheet.Cells[2,2]:='ИдТовара';                    //Шапка таблицы
    Sheet.Cells[2,3]:='ДатаЗаказа';
    Sheet.Cells[2,4]:='Срочность';
    Sheet.Cells[2,5]:='Колличество';
 
    fDM.TZakaziData.First;
    index:=3;
    //Цикл для вывода данных таблицы
    for i:=0 to fDM.TZakaziData.RecordCount do begin
    //Наполнение таблицы
    sheet.Cells[index,1]:=fDM.TZakaziData.Fields.Fields[1].AsString;
    sheet.Cells[index,2]:=fDM.TZakaziData.Fields.Fields[2].AsString;
    sheet.Cells[index,3]:=fDM.TZakaziData.Fields.Fields[3].AsString;
    sheet.Cells[index,4]:=fDM.TZakaziData.Fields.Fields[4].AsString;
    sheet.Cells[index,5]:=fDM.TZakaziData.Fields.Fields[5].AsString;
    Inc(index);
    fDM.TZakaziData.Next; //Переход на следующую строку
    end;  end;
Ответить с цитированием