Soubory XLS, vytvoření, export dat

Top  Previous  Next

 

Příklad č.1

Je využita interní technologie pro přímý export do formátů XLS/XLSX/ODS a jiných. Aplikace MS Excel nemusí být na stanici nainstalována.

 

var

 Xls: TExcelFile;

 Sheet: TExcelWorkSheet;

 Row: TExcelRow;

 Qry: TQuery;

 I: integer;

begin

 Xls := TExcelFile.Create;

 try

   Sheet := Xls.AddWorkSheet;

 

   Qry := TQuery.Create(nil);

   try

     Qry.DatabaseName := DefaultDatabaseName;

     Qry.SQL.Add('select id_stat, kod, nazev');

     Qry.SQL.Add('from dba.gstaty');

     Qry.SQL.Add('order by 1');

     Qry.Open;

 

     //do prvního řádku zapiš názvy polí

     Row := Sheet.AddRow;

     for I := 0 to Qry.FieldCount-1 do

       Row.AddCellString(Qry.Fields[I].FieldName);

 

     //do dalších řádků zapiš hodnoty datasetu

     while not Qry.Eof do begin

       Row := Sheet.AddRow;

       for I := 0 to Qry.FieldCount-1 do

         Row.AddCellString(Qry.Fields[I].AsString);

 

         {další metody:

         Row.AddCellNum(N: double=0; Decimal: integer=2)

         Row.AddCellDate(D: TDateTime)

         Row.AddCellDateTime(D: TDateTime)

         Row.AddCellEmpty}

 

       Qry.Next;

     end;

   finally

     Qry.Free;

   end;

 

   //zeptej se na soubor a ulož sheet

   Xls.SaveToFileWithDialog;

 finally

   Xls.Free;

 end;

end.

 

 

Příklad č.2

Je využita technologie OLE Automation pro vytvoření souboru XLS pomocí aplikace MS Excel. Tato aplikace proto musí být na stanici nainstalována.

 

var

 Excel: Variant;

 WorkBook: Variant;

 WorkSheet: Variant;

 Qry: TQuery;

 Row,Col: integer;

 WaitBox: TProgress;

begin

 //inicializuj Excel

 try

   Excel := CreateOLEObject('Excel.Application');

 except

   ErrorBox('Na této stanici není instalován MS Excel.');

   Exit;

 end;

 

 //příprav sheet

 WorkBook := Excel.WorkBooks.Add;

 WorkSheet := WorkBook.WorkSheets[1];

 WaitBox := TProgress.CreateSimple('Export do XLS',

   'Probíhá export kurzů. Prosím, čekejte...');

 try

   //otevři dataset a zapiš do XLS všechny řádky a sloupce

   Qry := TQuery.Create(nil);

   try

     Qry.DatabaseName := DefaultDatabaseName;

     Qry.SQL.Add('select mena_id, dne, koef, cinitel');

     Qry.SQL.Add('from dba.gkurzy');

     Qry.SQL.Add('where mena_id=''EUR''');

     Qry.SQL.Add('order by mena_id, dne');

     Qry.Open;

 

     //do prvního řádku v XLS zapiš názvy polí

     for Col := 1 to Qry.FieldCount do

       WorkSheet.Cells(1, Col) := Qry.Fields[Col-1].FieldName;

 

     //do dalších řádků zapiš hodnoty datasetu

     Row := 2;

     while not Qry.Eof do begin

       for Col := 1 to Qry.FieldCount do

         WorkSheet.Cells(Row, Col) := Qry.Fields[Col-1].Value;

     

       Inc(Row);

       Qry.Next;

     end;

   finally

     Qry.Free;

   end;

 finally

   WaitBox.Free;

 end;

 //zeptej se na soubor a ulož sheet

 with TSaveDialog.Create(nil) do

 try

   if WorkBook.FileFormat < 50 then

     DefaultExt := 'xls'

   else

     DefaultExt := 'xlsx'; //MS Office 2007+

   Filter := 'Soubory MS Excel|*.xls?';

   if Execute then

     WorkBook.SaveAs(FileName);

 finally

   Free;

 end;

 //zavři workbook

 WorkBook.Close;

end.

 

Související témata