O_Neill Geschrieben 30. Januar 2008 Geschrieben 30. Januar 2008 Also ich probiere gerade ein bisschen mit ODBC rum mit hilfe von C#.Net das im Visual Studio 2005 vorhanden ist. Nun bekomme ich den Connectionstring irgendwie nicht hin! OdbcConnection dbconnection = new OdbcConnection("Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\\Dokumente und Einstellungen\\Benutzer\\Eigene Dateien\\2007_1213 adressen buchhaltung.xls;DefaultDir=C:\\Dokumente und Einstellungen\\Benutzer\\Eigene Dateien"); dbconnection.Open(); //öffnen der Verbindung Es kommt immer folgende Meldung: System.Data.Odbc.OdbcException wurde nicht behandelt. Message="ERROR [HY000] [Microsoft][ODBC Excel Driver] Datenbank '(unbekannt)' konnte nicht geöffnet werden. Entweder wird die Datenbank nicht von Ihrer Anwendung erkannt, oder die Datei ist beschädigt.\r\nERROR [iM006] [Microsoft][ODBC Driver Manager] Fehler bei SQLSetConnectAttr-Aufruf für Treiber\r\nERROR [HY000] [Microsoft][ODBC Excel Driver] Datenbank '(unbekannt)' konnte nicht geöffnet werden. Entweder wird die Datenbank nicht von Ihrer Anwendung erkannt, oder die Datei ist beschädigt." Source="" ErrorCode=-2146232009 StackTrace: bei System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) bei System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle) bei System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) bei System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) bei System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) bei System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) bei System.Data.Odbc.OdbcConnection.Open() bei Versuchsprojekt.Form1.button1_Click(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\Benutzer\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\Versuchsprojekt\Form1.cs:Zeile 24. bei System.Windows.Forms.Control.OnClick(EventArgs e) bei System.Windows.Forms.Button.OnClick(EventArgs e) bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) bei System.Windows.Forms.Control.WndProc(Message& m) bei System.Windows.Forms.ButtonBase.WndProc(Message& m) bei System.Windows.Forms.Button.WndProc(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) bei System.Windows.Forms.Application.Run(Form mainForm) bei Versuchsprojekt.Program.Main() in C:\Dokumente und Einstellungen\Benutzer\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\Versuchsprojekt\Program.cs:Zeile 17. bei System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() bei System.Threading.ThreadHelper.ThreadStart_Context(Object state) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) bei System.Threading.ThreadHelper.ThreadStart() Danke schonmal im Vorraus! Zitieren
marcom Geschrieben 30. Januar 2008 Geschrieben 30. Januar 2008 Welche Excelversion benutzt Du denn? Mit der 2007er wird das so nicht funzen. Zitieren
O_Neill Geschrieben 30. Januar 2008 Autor Geschrieben 30. Januar 2008 Es handelt sich um eine xls-Datei, aber ich glaube die wurde unter Excel 2007 mal bearbeitet, kann das daran liegen? Zitieren
marcom Geschrieben 30. Januar 2008 Geschrieben 30. Januar 2008 Ich denk mal, Excel muss installiert sein, damit das funktioniert. Oder gibt es einen expliziten ODBC Treiber für Excel? Und wenn die Datei unter 2007 gespeichert worden ist, wirst Du OleDB verwenden müssen. Zitieren
O_Neill Geschrieben 30. Januar 2008 Autor Geschrieben 30. Januar 2008 Oder ich benutze ne ODBC Connection zu Excel2007. Danke für die Hilfe :nett: Zitieren
O_Neill Geschrieben 4. März 2008 Autor Geschrieben 4. März 2008 Hier übrigens die Lösung: String strConn = @"Dsn=Excel Files;dbq="+oFD.FileName+";defaultdir=C:\\;driverid=1046;maxbuffersize=2048;pagetimeout=5"; OdbcConnection objConn = new OdbcConnection(strConn); objConn.Open(); OdbcDataAdapter adp = new OdbcDataAdapter("select * from [Sheet1$]", objConn); DataSet ds = new DataSet(); adp.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; objConn.Close(); Zitieren
Flominator Geschrieben 8. Dezember 2008 Geschrieben 8. Dezember 2008 Hier ein weiteres funktionierendes Beispiel: Connect to an Excel file as a data source via OBDC Zitieren
Ivy91 Geschrieben 18. November 2011 Geschrieben 18. November 2011 hey, ich hab ne frage zu dem code snippet. Und zwar wird das ja jetzt in eine datatgridview ausgegeben. Ich möchte die daten aber in einem sting speichern. Jedoch steht in dem String bei mir immer nur "Table" drin und nicht meine eigentlichen daten. Was mache ich falsch? string datasource = ds.Tables[0].ToString(); Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.