Announcement

Collapse
No announcement yet.

Excel-Dateien

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

  • Excel-Dateien

    Wie kann ich am einfachsten Excel-Dateien lesen.
    (Zellinhalte in der Form Tabelle:Spalte:Zeile o.ä.)
    Ich bekomme als Quelldateien immer Excel-Dateien, die
    ich erst exportiere (in *.txt-Dateien) und dann imoprtiere
    (in eine Interbase-Datei).

    Thanks Mario.

  • #2
    Hallo,

    es gibt da mindestens 2 Möglichkeiten für den direkten Zugriff: <br>
    a) ODBC-Treiber für Excel <br>
    b) ADO (die JET ENGINE kann XLS direkt als Tabelle öffnen)<br>
    Da mittlerweile auch ein OLE DB-Provider für den InterBase als FreeWare zur Verfügung steht, kann ein Programm über ADO die Daten direkt von der XLS zur GDB schaufeln. Falls <i>ADO Express</i> (Delphi 5) zur Verfügung steht, ist dieser Import auch schnell erledigt. Ohne ADO Express dauerts einige Programmzeilen länger ;-

    Comment


    • #3
      Hallo,
      wo finde ich den OLE DB-Provider für Interbase?
      Haben Sie evtl. ein Beispiel wie man große Daten-
      mengen von einer Exceltabelle in eine Interbase
      tabelle schaufelt?

      Ich muß täglich eine Exceltabelle mit ca. 50000 Datensätzen
      (Artikel) mit einer Interbasetabelle abgleichen -> Preisänderungen <-
      vielen Dan

      Comment


      • #4
        Hallo,

        der OLE DB-Provider für den InterBase kann über die URL <b>http://www.sibprovider.hpg.com.br/eng/sibprovi.htm</b> heruntergeladen werden: You can download: <i>DLL file with 340KB - installation manually (see How to install it)</i>. Das Setup (EXE) muss nicht heruntergeladen werden (ist auch zu alt), statt dessen wird nur die DLL kopiert und danach registriert:
        <pre>
        regsvr32 SIBProvi.DLL
        </pre>

        Für den Import würde ich das FreeWare-Tool <b>InterBase Data Pump</b> (siehe http://www.geocities.com/poloziouk/) verwenden. Dieses Tool kann über einen BDE-Alias (inklusive ODBC-Treiber) die Quelldaten lesen und in den InterBase schreiben. Über einen Transformations-Dialog ist sogar eine Anpassung der einzelnen Spalten möglich

        Comment


        • #5
          Hallo Andreas,
          Die Lösung wäre toll !!! Leider funktioniert dies bei mir nicht.
          Vieleicht hast Du ja eine Idee woran es liegt .
          Also:
          Ich arbeite mit NT4.0 , CBuilder 5 Prof. + ADO Prof.,IB6
          Der SibProvider konnte ohne Probleme installiert werden.
          In der Entwicklungsumkebung habe ich eine ADOConnection auch mit meiner Interbase Datenbank verbinden können. Auch die Daten konnten
          in einem DBGrid ausgegeben werden !

          Beim Verbinden zur Laufzeit über eine Taste
          void __fastcall TForm1::Button1Click(TObject *Sender)
          {
          ShowMessage("Conection...");
          try
          {
          ADOConnection1->Connected = true;
          /*immer angezeigt*/
          ShowMessage("Conected!");
          }
          catch(...)
          {
          /*nie angezeigt*/
          ShowMessage("Error Test");
          }
          erhielt ich immer Exceptions der Klasse EOleDbException.
          Wurde mit F9 weitergearbeitet, so trat beim zweiten betätigen des Buttons kein Fehler mehr auf.
          Auch konnten Daten der Interbasetabelle im DBGrid angezeigt werden
          Zweiter Button : ADOTable1->Active=true;
          Wie bekomme ich die Exceptions weg ?

          Mein Hauptanliegen war Daten aus Interbase in eine Excel Datei zu exportieren und so wollte ich Deinen Tip mit der ADOCommand Komponente vom 28.02.2000 (hier im Forum) ausprobieren !

          Da trotz Exception wohl eine Verbindung zur Interbase-Datenbank bestand fügte ich eine ADOCommand Komponente ein.
          Erstellte einen CommandText und führte diesen über einen weiteren Button aus (ADOCommand1->Execute()
          Auch hier erschienen Exceptions der Klasse EOleDbException und anschiessend eine Exception der Klasse EIBInterbaseError.
          Es wurden keine Daten exportiert!

          Hier noch einige Quelltextauszüge

          object ADOConnection1: TADOConnection
          ConnectionString =
          'Location=MyServerName:;Data Source=S:data\\dbs\\MY.gdb;
          User Id' + '=SYSDBA;Password=masterkey'
          ConnectOptions = coAsyncConnect
          LoginPrompt = False
          Mode = cmShareDenyNone
          Provider = 'SIBProvider'
          Left = 24
          Top = 16
          end
          object ADOTable1: TADOTable
          Connection = ADOConnection1
          CursorType = ctStatic
          TableName = 'BILANZ'
          Left = 24
          Top = 72
          end
          object DataSource1: TDataSource
          DataSet = ADOTable1
          Left = 64
          Top = 72
          end
          object ADOCommand1: TADOCommand
          CommandText =
          'select * '#13#10'INTO BILTMP IN "D:\\Tmp\\Bil.xls"
          "Excel 8.0;" '#13#10'from' + ' BILANZ'#13#10
          Connection = ADOConnection1
          Parameters = <>
          ParamCheck = False
          Left = 24
          Top = 224
          end
          end

          Sind die Fehler nachvollziehbar ?

          Ist der Weg zum Datenexport Interbase -> Excel-Tabelle über die ADO-Komponenten der richtige Weg

          Comment


          • #6
            Hallo,

            zum Nachvollziehen fehlt mir eine wichtige Zutat - der BCB ;-)

            In Delphi sieht der Zugriff auf eine InterBase-Datenbank über den OLE DB-Provider <i>SIBProvider</i> so aus:
            <pre>
            object ADOConnection1: TADOConnection
            ConnectionString = 'Provider=SIBProvider;Location=localhost:;Data Source=C:\Database' +
            '\REDSYS2.GDB;Character Set=ISO8859_1;User Id=SYSDBA;Password=masterkey'
            LoginPrompt = False
            Provider = 'SIBProvider'
            Left = 8
            Top = 8
            end
            </pre>
            Das Programm greift dabei über <b>TADODataSet</b> auf die InterBase 6-Datenbank zu. <br>
            Um die Daten nun mit Hilfe von ADO in eine XLS-Datei zu schreiben, wird die Mithilfe der <i>Microsoft JET ENGINE</i> (also eines zweiten OLE DB-Providers) benötigt. Der InterBase-Provider <i>SIBProvider</i> hat keine Ahnung von der erweiterten Syntax der SELECT INTO-Anweisung.
            &#10

            Comment

            Working...
            X