![]() |
Datenbank: MySQL • Zugriff über: MyDAC
Daten aus Excel auslesen und in MySQL einfügen
Hallo,
ich hoffe ihr könnt mir wiedereinmal helfen. Ich brauche ein kleines Prog um Daten aus einer Excel Tabelle auszulesen und in MySQL einzulesen...naja, besser währe es wenn das eine Funktion währe... So, was noch dazu kommt, ist das die Tabellen wo die Daten her kommen nicht immer gleich sind...also währe ein Grid zum auswählen auch nicht schlecht...hat jemand sowas schonmal gemacht? Währe auch schön wenn ihr es mir so erklären könnt, dass es auch ein dummer versteht....bin anfänger :gruebel: Danke im vorraus! MFG der Leah... |
Re: Daten aus Excel auslesen und in MySQL einfügen
ich kann dir da das Programm
![]() Anonsten kannst du in Excel auch die Daten ins csv speichern und das kannst du dann ganz bequem mit php oder delphi oder was auch immer auswerten. |
Re: Daten aus Excel auslesen und in MySQL einfügen
Zitat:
|
Re: Daten aus Excel auslesen und in MySQL einfügen
Ja,
nimm eine TADOConnection und eine TADOTable. Damit kannst du jede Excel Arbeitsmappe öffnen, ohne das Excel installiert sein muss. Ado liest die Excel Arbeitsbereichsseiten sauber ein und interprätiert sogar berechnete Felder (Formeln) richtig. Öffnen kannst du die XLS so ..
Delphi-Quellcode:
// Opendialog öffnen und AdoConnection verbinden Adoconn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Provider=Microsoft.Jet.OLEDB.4.0; ' + 'Data Source=' + Opendialog.Filename + ';' + 'Extended Properties=Excel 8.0; ' + //<< immer Excel 8.0 !!! 'Persist Security Info=False'; Adoconn.open; // Eine Combobox (xlsWorksheets mit den Arbeitsbereichsseiten der Excel Arbeitsmappe füllen xlsWorksheets.Enabled := Adoconn.Connected; if Adoconn.Connected then begin Adoconn.GetTableNames(xlsWorksheets.Items, true); end; // Wenn es mindestens eine Arbeitsbereichsseite gibt > Auswählen und Öffnen ... User die gewünschte Arbeitsbereichsseite wählen lassen ggf. automatisch xlsWorksheets.Items[0] verwenden, falls es nur eine Arbeitsbereichsseite gibt ... if xlsWorksheets.items.count =0 then begin Showmessage('In der gewählten Arbeitsmappe sind keine Arbeitsbereichsseiten verfügbar'); exit; end else begin With AdoTableXLS do begin close; Connection:=Adoconn; tablename:=xlsWorksheets.items[xlsWorksheets.itemindex]; open; end; end; |
Re: Daten aus Excel auslesen und in MySQL einfügen
Zitat:
Zum Einlesen deiner Tabellen musst du nur in Excel deine Namensbereiche definieren, inklusive Spaltenköpfe. |
Re: Daten aus Excel auslesen und in MySQL einfügen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Einen Punkt habe ich aber überlesen... Zitat:
Baue dir am besten einfach einen kleinen "FieldMapper" (s.Screenshot) mit dem du die passenden Felder aus der Excel Tabelle zu deinem MySQL Feldern zuordnen kannst. Dann kannst du die Daten flexibel (am Besten über eine SP) in die Datenbank importieren. Prinzipiell kannst du so dynamisch die, zu deiner MyTable passenden, Excel Spaltennamen aus dem FieldMapper auslesen und nutzen ...
Delphi-Quellcode:
MyTable.FieldByName('Wohnort').value:=
xlsTable.FieldByname(Fieldmapper.Values[FieldMapper.IndexOf('fWohnort')]).value;
Delphi-Quellcode:
MySP.ParametersByName('Wohnort'):=
xlsTable.FieldByname(Fieldmapper.Values[FieldMapper.IndexOf('fWohnort')]).value; |
Re: Daten aus Excel auslesen und in MySQL einfügen
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die vielen Tips...bin aber im moment ein bisschen überfordert...
erstmal will ich die Daten sauper auslesen, und das ganze in einem Grid darstellen...soweit bin ich bis jetzt...:
Delphi-Quellcode:
Wobei Box1 ein Dropdown feld ist...der rest müsste sich von alleine erklären...das funktioniert auch bis jetzt...leider mach er sobald ich deb ADOTable1 auf true setze nen Syntaxfehler...ich häng die exe mal an...
procedure TForm1.Button1Click(Sender: TObject);
var name : string; begin box1.text := ''; box1.Enabled := false; AdoConnection1.Connected := false; name := 'none'; OpenDialog1.FileName := 'none'; OpenDialog1.Execute; if RightStr(OpenDialog1.FileName, 3) = 'xls' Then begin name := OpenDialog1.FileName; If name = 'none' Then begin end else begin AdoConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ name +';Extended Properties=Excel 8.0;Persist Security Info=False'; AdoConnection1.Open; Box1.Enabled := true; Box1.Text := 'Bitte auswählen'; AdoConnection1.GetTableNames(Box1.Items); Button2.Visible := true; end; end else begin Button2.Visible := false; Showmessage('Es muss eine XLS-Datei ausgewählt werden!'); end; if Box1.items.count = 1 then begin box1.Text := box1.Items.Text; end end; procedure TForm1.Button2Click(Sender: TObject); begin if box1.Text = 'Bitte auswählen' then begin Showmessage('Es muss eine Tabelle ausgewählt werden!') end else begin AdoTable1.Connection := AdoConnection1; AdoTable1.TableName := Box1.items[Box1.itemindex]; AdoTable1.Active := true; end; end; |
Re: Daten aus Excel auslesen und in MySQL einfügen
Korrigierter Beitrag ...
Delphi-Quellcode:
Bei einer TAdoTable kann man das auch irgendwie anders hinbiegen.
procedure TForm1.Button2Click(Sender: TObject);
begin if box1.Text = 'Bitte auswählen' then begin Showmessage('Es muss eine Tabelle ausgewählt werden!') end else begin AdoTable1.Connection := AdoConnection1; // Der Name enthält ein $. Damit der Tabellenname trotz Sonderzeichnen // akzeptiert werden kann, muss er in eckigen Klammern stehen AdoTable1.TableName := '['+Box1.items[Box1.itemindex]+']'; // <<<< AdoTable1.Active := true; end; end; Leider kann ich da grade nicht reinschauen. (denke das war TableDirect := true ...) |
Re: Daten aus Excel auslesen und in MySQL einfügen
öhm... :gruebel: wie? einfach die Zeile hinzufügen? Dann klappt garnichts mehr...
|
Re: Daten aus Excel auslesen und in MySQL einfügen
entschuldige bitte...
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin if box1.Text = 'Bitte auswählen' then begin Showmessage('Es muss eine Tabelle ausgewählt werden!') end else begin AdoTable1.Connection := AdoConnection1; AdoTable1.TableName := '['+Box1.items[Box1.itemindex]+']'; //<<<<<<<<<<<<<<<< Da meine ich ... AdoTable1.Active := true; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz