Announcement

Collapse
No announcement yet.

Export einer Paradox-Tabelle in eine Excel-Datei (xls) ohne OLE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Export einer Paradox-Tabelle in eine Excel-Datei (xls) ohne OLE

    Hallo Leute,

    ich habe das folgende Problem. Ich möchte eine Excel-Datei erzeugen ohne OLE-Automation. In dieser xls-Datei sollen die Daten einer Paradox-Tabelle gespeichert werden.

    In Paradox gibt es den Befehl "exportSpreadsheet", der sehr schnell ist. Aber wie bekomme ich das in Delphi ohne Benutzung einer 3rd-Party-Komponente hin ?

    Grüsse,
    Carsten

  • #2
    Hallo,

    ein Weg (der mit vorinstallierten Objekten) auskommt führt über ADO (genauer gesagt die Microsoft JET Engine). Immer dann, wenn MDAC auf dem Rechner installiert ist, kann man die JET Engine für den Import und Export nutzen.

    Das folgende Beispiel demonstriert dies:

    <pre>

    { ************************************************** **************
    Autor : Andreas Kosch
    Compiler : Delphi 6.01 Enterprise / Delphi 6.01 Enterprise
    Betriebssystem : Windows 2000 / Windows XP Professional
    Erstellt am : 18.09.2000 / 09.12.2001
    Beschreibung : Import- und Exportfähigkeiten der
    Microsoft Jet Engine
    ************************************************** ************** }

    unit ExportImportFrm;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Db, ADODB, StdCtrls, ExtCtrls, ComCtrls, Grids, DBGrids;

    type
    TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    RadioGroupExport: TRadioGroup;
    ButtonExport: TButton;
    ButtonImport: TButton;
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    ADOConnImport: TADOConnection;
    ADOTableImport: TADOTable;
    DataSourceImport: TDataSource;
    procedure ButtonExportClick(Sender: TObject);
    procedure ButtonImportClick(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.ButtonExportClick(Sender: TObject);
    resourcestring
    cSQL1 = 'SELECT * INTO [Export.%s] IN "C:\Temp" "%s;" FROM Customer';
    cSQL2 = 'SELECT * INTO %s IN "C:\Temp\%s" "Excel 8.0;" FROM Customer';
    cSQL3 = 'SELECT * INTO [%s] IN "C:\Temp\%s" FROM Customer';
    var
    sSQL : String;
    iRows: Integer;
    begin
    case RadioGroupExport.ItemIndex of
    0 : sSQL := Format(cSQL1, ['dbf', 'dBASE 5.0']);
    1 : sSQL := Format(cSQL1, ['db', 'Paradox 5.x']);
    2 : sSQL := Format(cSQL1, ['htm', 'HTML Export']);
    3 : sSQL := Format(cSQL1, ['txt', 'Text']);
    4 : sSQL := Format(cSQL2, ['Tabelle1', 'Export.xls']);
    5 : sSQL := Format(cSQL3, ['Cust', 'Export.MDB']);
    end;
    StatusBar1.Panels[0].Text := sSQL;
    ADOConnection1.Connected := True;
    ADOConnection1.Execute(sSQL, iRows);
    ADOConnection1.Connected := False;
    StatusBar1.Panels[1].Text := IntToStr(iRows);
    ShowMessage(Format('Es wurden %d Datensätze exportiert.', [iRows]));
    end;

    procedure TForm1.ButtonImportClick(Sender: TObject);
    begin
    ADOTableImport.Active := False;
    ADOConnImport.Connected := False;
    ADOConnImport.Provider := 'Microsoft.Jet.OLEDB.4.0';
    case RadioGroupExport.ItemIndex of
    0 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'dBASE 5.0';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp';
    ADOTableImport.TableName := 'Export';
    end;
    1 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'Paradox 5.x';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp';
    ADOTableImport.TableName := 'Export';
    end;
    2 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'HTML Import';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp\Export.htm';
    ADOTableImport.TableName := 'Export';
    end;
    3 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'Text';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp';
    ADOTableImport.TableName := 'Export.txt';
    end;
    4 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'Excel 8.0';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp\Export.xls';
    ADOTableImport.TableName := 'Tabelle1';
    end;
    5 : begin
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp\Export.mdb';
    ADOTableImport.TableName := 'Cust';
    end;
    end;
    ADOConnImport.Connected := True;
    ADOTableImport.Active := True;
    end;

    end.

    </pre&gt

    Comment

    Working...
    X