C# Probleme mit EXEl Datei...

PeterParty

Lt. Junior Grade
Registriert
Aug. 2008
Beiträge
282
Guten Abend,
Ich habe ein Problem beim Schreiben in eine .xlsx Datei.

Code:
try
            {
                System.Data.OleDb.OleDbConnection MyConnection;
                System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
                string sql = null;
                MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\filebase.xlsx';Extended Properties=Excel 8.0;");
                MyConnection.Open();
                myCommand.Connection = MyConnection;
                sql = "Insert into [Tabelle1$] (id,name) values('5','e')";
                myCommand.CommandText = sql;
                myCommand.ExecuteNonQuery();
                MyConnection.Close();
                MessageBox.Show("Erfolgreich");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

Ich bekomme immer eine Fehlermeldung wenn ich auf Hinzufügen klicke.
Woran kann das liegen ?

Mit freundlichen Grüßen

Peter
 


Uploaded with ImageShack.us

Sorry, das ist die Fehlermeldung.

Mfg
Peter

So ich habe mal meinen PC Neugestartet^^
Jetzt bekomm ich den Fehler:


Uploaded with ImageShack.us
 
Zuletzt bearbeitet:
Da steht doch ganz unten Zeile 263! Was wird da aufgerufen?
Ist auf jeden fall so, dass du OleDB nicht initalisieren kannst... falsche Parameter?
 
Mal ganz nebenbei:
Du versuchst eine Excel xlsx Datei mit einem Excel 8.0 Jet Modul anzusprechen. Mit anderen Worten du versuchst eine Excel 2007 (oder höher) Datei mit einer Funktionalität von Excel 97 zu öffnen. Wenn mich nicht alles täuscht, wirst du immer kläglich dran scheitern. Das es so nicht geht, sagt schon die Meldung "Installierbares ISAM nicht gefunden."

Im übrigen ist so eine xlsx Datei nix weiter als ein gezipptes Archiv, dass diverse XML Dateien enthält, also was spricht dagegen das Archiv zu entpacken, die entsprechende XML Datei zu manipulieren und das ganze dann wieder zu packen?
 
Rossibaer schrieb:
Im übrigen ist so eine xlsx Datei nix weiter als ein gezipptes Archiv, dass diverse XML Dateien enthält, also was spricht dagegen das Archiv zu entpacken, die entsprechende XML Datei zu manipulieren und das ganze dann wieder zu packen?

Moin,
Nichts Spricht dagegen... Aber wie Funktioniert dass ?

Mfg
Peter
Ergänzung ()

Es Funktioniert jetzt alles,
eine Frage habe ich aber noch.

Wie kann ich den Text den er schreiben soll aus einer Textbox beziehen ?

ich habe mal einen String angelegt wo er den Textbox Inhalt Speichert:

Code:
string Titel = textBox6.Text;

Wie kann ich diesen jetzt in die EXEL Datei schreiben ?

Code:
sql = "Insert into [Tabelle1$] (Archiv,Flugsimulator,Kategorie,Hersteller,Titel,Version) values()";

nur wie bekomme ich in die values jetzt die Variablen rein ?

Mfg
Peter
 
PeterParty schrieb:
Wie kann ich diesen jetzt in die EXEL Datei schreiben ?

Code:
sql = "Insert into [Tabelle1$] (Archiv,Flugsimulator,Kategorie,Hersteller,Titel,Version) values()";

nur wie bekomme ich in die values jetzt die Variablen rein ?

Mfg
Peter

Da gibt es mehrere Möglichkeiten:

Die Quick & Dirty Variante wäre, dass du die Werte einfach concatierst, z.B.

Code:
sql = string.Concat("Insert into [Tabelle1$] (Archiv,Flugsimulator,Kategorie,Hersteller,Titel,Version) values('", 
  TextBox1.Text,"','", TextBox2.Text,"','", TextBox3.Text,"','", 
  TextBox4.Text,"','", TextBox5.Text,"','", TextBox6.Text,"')");

In der sql Variable sollte nun der Text ungefähr so aussehen:
Code:
Insert into [Tabelle1$] (Archiv,Flugsimulator,Kategorie,Hersteller,Titel,Version) values('Archiv1', 'Flightsimulator 10', 'Realitätsnah', 'Microsoft', 'Microsoft Flightsimulator', '10.0')


Dabei gilt aber zu beachten, dass
1. die Werte jeweils in einfache Hochkommas ( ' ) eingeschlossen sind
2. wenn Werte selbst ein einfaches Hochkomma enthalten, dann diese durch 2 einfache Hochkomma ersetzt werden, z.B. statt " Tom's Flugsimulator " schreibe " Tom''s Flugsimulator "

Viel Erfolg
Rossibaer
 
Zurück
Oben