Hallo zusammen, ich steh vor einem Problem und hoffe das Ihr mir helfen könnt. ich möchte bei einer Excel Tabelle die einzelen Worksheets auslesen und dann mit etwas vergleichen. Aber ich hänge noch bei dem Auslesen. private string[] GetWorksheetNames(string excelFile) { OleDbConnection con = new OleDbConnection(); con.ConnectionString = "Data Source=" + excelFile + ";Provider=Microsoft.Jet.OLEDB.4.0" + ";Extended Properties=Excel 8.0"; try { con.Open(); } catch(OleDbException ex) { MessageBox.Show(ex.Message); } DataTable tab = con.GetOleDbSchemaTable( OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); con.Close(); string[] tableNames = new string[tab.Rows.Count]; for (int i = 0; i < tab.Rows.Count; i++) { tableNames[i] = tab.Rows[i] ["Table_Name"].ToString(); } return tableNames; } private void btn_Save_Click(object sender, EventArgs e) { // Wenn die Datei nicht exestiert dann neu erstellen if (!File.Exists("c:\\Materialentnahme.xlsx")) { if (!string.IsNullOrEmpty(tBox_Name.Text) && !string.IsNullOrEmpty(tBox_Porjektnum.Text)) { string worksheet_Name_Projektnummer = tBox_Name.Text + tBox_Porjektnum.Text; Export.Save("c:\\Materialentnahme.xlsx", worksheet_Name_Projektnummer, Einkauf); } if (!string.IsNullOrEmpty(tBox_Name.Text) && !string.IsNullOrEmpty(tBox_kostenstelle.Text)) { string worksheet_Name_Kostenstelle = tBox_Name.Text + tBox_kostenstelle.Text; Export.Save("c:\\Materialentnahme.xlsx", worksheet_Name_Kostenstelle, Einkauf); } if(File.Exists( "c:\\Materialentnahme.xlsx" ) ) { string[] str_ExcelTabeleNames = GetWorksheetNames("c:\\Materialentnahme.xlsx"); System.Console.WriteLine(str_ExcelTabeleNames); } }
Ups da war ich zu schnell. Er hängt bei con.Open(); Es dort gibt es einen error.
Eberhard schrieb: > Ups da war ich zu schnell. > > Er hängt bei con.Open(); Es dort gibt es einen error. Geht Excel wirklich über eine OLEDB zu öffnen? Ich dachte bis dato, er braucht eine Instanz.
Martin Schwaikert schrieb: > Geht Excel wirklich über eine OLEDB zu öffnen? Ich dachte bis dato, er > braucht eine Instanz. Kopfkratz Da bin ich mir jetzt nicht sicher.
Verdammt kommt nicht auf die Seite. Die ist von der Firma gespeert, was hast den da für Schmuddelsachen drauf? :D
Ein einfacher Weg statt OleDB dürfte die Nutzung der Automationsschnittstelle von Office sein, da gibt es ein recht umfangreiches und halbwegs brauchbar dokumentiertes Objektmodell, über das man auch an nicht-datenbankrelevante Dinge herankommt. Für Java solltest Du Dir mal JACOB, Scriptom und Groovy ansehen.
Hallo ich sehe es jetzt gerade erst. Hat es was damit zu tuen, dass ich ein 64 Bit system habe und das nur auf 32 Bit läuft? *Der 'Microsoft.Jet.OLEDB.4.0'-Provider ist nicht auf dem lokalen Computer registriert.* Ich Programmier halt in C# von Java habe ich recht wenig ahnung... hm eher keine.
Lösung: con.ConnectionString = "Data Source=" + excelFile + ";Provider=Microsoft.Jet.OLEDB.4.0" + ";Extended Properties=Excel 8.0"; *ändern in:* string mExcelCon = @"Provider=Microsoft.ACE.OLEDB.12.0;"; con.ConnectionString = mExcelCon + "Data Source=" + excelFile + ";Extended Properties= " + Convert.ToChar(34).ToString() + "Excel 12.0;HDR=Yes" + Convert.ToChar(34).ToString();
http://blogs.msdn.com/b/farukcelik/archive/2010/06/04/accessing-excel-files-on-a-x64-machine.aspx (CASE 2) ...ich würde aber auch eher den anderen Weg gehen ("open excel c#" dürfte da in google genügend Treffer bringen)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.