|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Экспорт Отчётов в 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; |