![]() |
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; |
Re: Daten aus Excel auslesen und in MySQL einfügen
Super :wink: thanks!
Fehler verschwunden...jetzt kann ich mich ans Grid machen! MFG der Leah... :-D |
Re: Daten aus Excel auslesen und in MySQL einfügen
if RightStr(OpenDialog1.FileName, 3) = 'xls' Then :roll:
Also Hallo erst ma :P ich komm nich so klar mit RightStr.... bin auch noch ziehmlich neu... Azubi mit sogut wie keiner programmier erfahrung (LEIDER) und dat im 2 lehrjahr *schähm* :( Aber mein Problem ist ich sollte mir nen progrämmchen schreiben das Xls dateien in DB (Paradox) umwandelt... viele versuche es über Datenbankoberfläche zumachen sind gescheitert sprich... xls in dbf speichern und dat dann in DB umzuwandeln....leider gehen da daten verloren... ä,ö,ü, wird nich übernommen mehr zeilige zellen in der Exel datei werden abgeschnitten (was mir ja alles einleuchtet) aber nu muss ich es anders probieren bin hier auch schon etwas weiter gekommen aber noch nich ans ziel... hoffe ihr seid so nett und helft mir nen bissel... mit nem kleinen Lösungsansatz wer sehr zufrieden und kann meinem ausbilder auch was zeigen wenn er vom "urlaub" wieder da is... Bin ich schon auf dem richtigen weg wenn ich ADOTable benutz? wie speicher ich Xls in db? gibts da einfache schnelle lösung? viele grüße ;) und respekt vor sonem Formum is richtig interesante sache!! |
Re: Daten aus Excel auslesen und in MySQL einfügen
Hi BW19,
es wäre schön wenn du für deine Frage einen neuen Thread aufmachst. Sonst wird es hier sehr unübersichtlich. :warn: Vorab schon mal in aller Kürze... ich würde es vermutlich so lösen 1. XLS mit einer TADOTable öffnen (s.o.) 2. zur Laufzeit eine TTable erstellen (als Paradox-Tabelle) 3. die Fielddefs der AdoTable in einer Schleife durchlaufen, dabei für jedes einzelne Feld ... 3.1 den Feldtyp (String, Datum, Integer, Float ...) ermitteln 3.2 den Feldnamen ermitteln 3.3 Zusatzinformationen auslesen (MaxLength usw.) 3.4 in den Fielddefs der TTable ein Feld mit dem o.A. Eigenschaften erzeugen 4. die Paradox-Tabelle mit {TTable}.CreateTable erzeugen 5. jetzt hast du eine Paradox-Tabelle, welche die selbe Struktur wir die XLS haben sollte 5.1 die Datensätze der TADOTable mit "While not {TAdoTable}.EOF do" durchlaufen und jeden Datensatz ... 5.2 mit {TTable}.AppendRecord in die Paradox-Tabelle einfügen Nachdem das sauber funktioniert musst du dein Programm noch etwas universell gestalten. z.B. - enthält die erste Zeile der XLS den Spaltentitel oder Daten ? - welche Paradox Version - gibt es ein Feld, das u.U. als Primary Key verwendet werden kann - ... Schöne Grüße, Jens :hi: [edit] Beinahe vergessen ... Willkommen in der DP :dp: :cheers: [/edit] |
Re: Daten aus Excel auslesen und in MySQL einfügen
Hi,
sitze gerade an etwas ähnlichem ... Struktur soweit gleich. Zitat:
ich kann die erste zeile garnicht auslesen ... beginnt immer in zeile 2
Delphi-Quellcode:
Weiß jemand Rat? :roll:
ADOtable.First;
ADOtable.Open; While not ADOtable.eof do begin ... end |
Re: Daten aus Excel auslesen und in MySQL einfügen
Zitat:
ADO geht auch bei Excel davon aus, daß die erste Zeile die Feldnamen enthält und keinen Datensatz ... Daher kann man die erste Zeile nur mit GetFieldnames auslesen! :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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