Консультация № 98154
12.08.2007, 21:10
0.00 руб.
0 2 2
Уважаемые эксперты! Помогите как из полей editов цифры переместить в готовую таблицу в Ексель (в строку D3,4,5....18,19 и тд.) ,как бы создать отчёт? Таблица имеет имя "Отчет по обследованию". Как связать программу и таблицу?

Обсуждение

Неизвестный
12.08.2007, 21:43
общий
это ответ
Здравствуйте, SIR!

Вот тут неплохо описан экспорт данных в Excel
ссылка <a href=http://www.compdoc.ru/prog/pascal/export_document_in_excel/>описание "Экспорт документов в Excel"</a>

В приложении дан код - это отдельный модуль, можете его подключить и использовать.


Приложение:
unit uExportExcel;interfaceuses SysUtils, Variants, Classes,Windows,Messages, StdCtrls,ComObj,ActiveX, Controls,DBTables,DB;type TFPrint = class private { Private declarations } public function IsOLEObjectInstalled(Name: String): boolean; procedure PrintTable(table,query:TDataset); end;var FPrint: TFPrint;implementation{ TForm1 }//******************************************************************************function TFPrint.IsOLEObjectInstalled(Name: String): boolean;var ClassID: TCLSID; Rez : HRESULT;begin Rez := CLSIDFromProgID(PWideChar(WideString(Name)), ClassID); Result := (Rez = S_OK);end;//******************************************************************************//******************************************************************************//*************************************************procedure TFPrint.PrintTable(table,query: TDataset);LABEL L;var ExcelApp, Workbook,shet{, Range, Cell1, Cell2, ArrayData }: Variant; path,name:String; mark:TBookmark; i,j:integer;begin path:=GetCurrentDir +‘\обследование.xlt‘; ExcelApp := CreateOleObject(‘Excel.Application‘); ExcelApp.Application.EnableEvents := false; Workbook := ExcelApp.WorkBooks.Add(path); //row col shet:=WorkBook.WorkSheets[1]; table.DisableControls; mark:=table.GetBookmark; //******************************************************************************* j:=2; table.First; while not table.Eof do begin for i:=0 to Table.FieldCount-1 do begin //row kol DATA if(i=0)then shet.Cells[j,i+1].Value := FormatDateTime(‘dd.mm.yyyy‘,table.Fields[i].AsDateTime) else if(i=1)then shet.Cells[j,i+1].Value := table.Fields[i].AsString else shet.Cells[j,i+1].Value := table.Fields[i].AsFloat; end; table.Next; inc(j); end; if not DirectoryExists(GetCurrentDir+‘\Отчеты‘) then begin if not CreateDir(GetCurrentDir+‘\Отчеты‘) then path:=GetCurrentDir else path:=GetCurrentDir+‘\Отчеты‘; end else path:=GetCurrentDir+‘\Отчеты‘; I:=1; name:=‘\ELECTRO_‘+FormatDateTime(‘ddmmyy‘,Date)+‘.xls‘;L: if(FileExists(path+name))then begin name:=‘\обследование_‘+FormatDateTime(‘ddmmyy_‘,Date)+IntToStr(i)+‘.xls‘; inc(i); goto L; end; WorkBook.SaveAs(path+name); ExcelApp.Visible := true; shet.Activate; table.GotoBookmark(mark); table.FreeBookmark(mark); table.EnableControls;end;end.
Неизвестный
12.08.2007, 22:32
общий
это ответ
Здравствуйте, SIR!
Используте OLE или DDE компоненты.
Укажите адрес источника и приемника.
Форма ответа