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 |