myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Office-Technologien » Microsoft.ACE.OLEDB.12.0 bringt auf einer Maschine, dass der Treiber nicht installiert ist
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Microsoft.ACE.OLEDB.12.0 bringt auf einer Maschine, dass der Treiber nicht installiert ist

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
oehrle oehrle ist männlich
myCSharp.de-Mitglied

Dabei seit: 08.06.2009
Beiträge: 367
Entwicklungsumgebung: VisualStudio 2010/2012
Herkunft: Germany


oehrle ist offline

Microsoft.ACE.OLEDB.12.0 bringt auf einer Maschine, dass der Treiber nicht installiert ist

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo , habe das Problem das ich eine Excel einlesen muss, wie ich das schon oft gemacht habe.
Geht aber nicht, der Treiber sei nicht installiert.
Hane dann eine andere applikation vom mit genommen, dort die Excel eingelesen, voila das geht.

Habe nun schon die OLEDB - Access nachinstalliert, keine Chance, geht nicht. Immer noch gleicher Fehler.
Habe dann die Access2013 RunTime installiert, kein erfolg.

 https://www.microsoft.com/en-us/download/confirmation.aspx?id=39358

Ich habe Office 365 drauf, kann das ein Problem sein (Firmenrechner).

So sieht der Code aus:

C#-Code:
    System.Data.DataTable tblExl = new System.Data.DataTable("Exceldaten");

System.Data.OleDb.OleDbConnection con = null;



            con = new System.Data.OleDb.OleDbConnection();
            con.ConnectionString = "Data Source=" + dateinemaMitPfadExceldatei + ";Provider=Microsoft.ACE.OLEDB.12.0;";
            con.ConnectionString += "Extended Properties=\"Excel 12.0;HDR = Yes;IMEX=1\";";

//// Exceltabelle in Dataset einlesen
            try
            {
                string tableName = "Sheet1$";
                string sql = "SELECT * FROM [" + tableName + "]";

                System.Data.OleDb.OleDbDataAdapter adap = new System.Data.OleDb.OleDbDataAdapter(sql, con);
                adap.Fill(tblExl = new System.Data.DataTable(dateinemaMitPfadExceldatei));





            }
            catch (Exception ex)
            {

            }

Wäre um jeden Tipp dankbar, das ist echt zeitfressend.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von oehrle am 23.06.2019 15:45.

23.06.2019 07:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.835
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Schau Dir  https://github.com/NetOfficeFw/NetOffice an, das nimmt Dir sowas ab oder verwende direkt OpenXML (wenn möglich).
23.06.2019 18:20 Beiträge des Benutzers | zu Buddylist hinzufügen
oehrle oehrle ist männlich
myCSharp.de-Mitglied

Dabei seit: 08.06.2009
Beiträge: 367
Entwicklungsumgebung: VisualStudio 2010/2012
Herkunft: Germany

Themenstarter Thema begonnen von oehrle

oehrle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok, danke für die Info.

Also wie gesagt, ich könnte das Exel-Sheet auch zeilenweise einlesen, das würde bestimmt gehen.
Nur wenn ich es mit dem DataAdapter einlese, dann habe ich das Problem.

Da hat niemand die Erfahrung wie ich gemacht? Das war eine seht bequeme Art.
Nur komisch das es jetzt in einem neuen Projekt nicht mehr läuft.
Was noch ein Unterschied sein kann: Die neue Entwicklung läuft mit Win10, die vorige wurde unter WIn7 erstellt,damals hatte ich noch Office 2010 auf dem Rechner.
Kann das der Grund sein?
24.06.2019 05:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Stefan.Haegele Stefan.Haegele ist männlich
myCSharp.de-Mitglied

avatar-3068.jpg


Dabei seit: 13.03.2009
Beiträge: 381
Entwicklungsumgebung: Visual Studio 2010 Ultimat
Herkunft: Untermeitingen


Stefan.Haegele ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hast du dir die Antwort nicht schon selbst gegeben? Du verwendets in deinem Connectstring Excel 12 = Office 2007.
24.06.2019 07:10 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
robbyrc robbyrc ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.02.2006
Beiträge: 317
Entwicklungsumgebung: Visual Studio 2013 Prof.
Herkunft: Passau


robbyrc ist offline MSN-Passport-Profil von robbyrc anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ist eventuell die 32Bit-Version von Excel oder der Runtime installiert?

Wenn ja - muss deine Applikation auch als x86 in 32 Bit kompiliert werden, da ansonsten der 64-Bit Prozess nicht auf den Treiber zugreifen kann. Das ist auch eine kleine Stolperfalle, gleiches z.B. wenn du per OleDB den JET-Treiber verwenden willst.
24.06.2019 09:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
oehrle oehrle ist männlich
myCSharp.de-Mitglied

Dabei seit: 08.06.2009
Beiträge: 367
Entwicklungsumgebung: VisualStudio 2010/2012
Herkunft: Germany

Themenstarter Thema begonnen von oehrle

oehrle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo, ja habe das auf X86 eingestellt.
Die ältere Applikation arbeitet mit Microsoft.ACE.OLEDB.12.0

Das ist der Punkt warum ich das auch nicht verstehen will. Der QUellcode der älteren Applikation läuft damit, die neue Applikation nicht, und wenn ich 14.0/15.0/16.0 einstelle, kommt der gleiche Fehler.

Office ist als 32-Bit instaliert, laut der Accounteinstellungsinformationen.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von oehrle am 24.06.2019 12:47.

24.06.2019 12:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ThomasE. ThomasE. ist männlich
myCSharp.de-Mitglied

avatar-178.gif


Dabei seit: 26.11.2013
Beiträge: 446
Entwicklungsumgebung: Visual Studio 2015Pro/2017Ent


ThomasE. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dieser Link hier  https://www.microsoft.com/en-us/download/confirmation.aspx?id=39358 ist die 64Bit Version, zeigt er mir an wenn ich draufklicke.

Brauchst ja aber die 32er oder täusch ich mich, vielleicht hast du das übersehen?

Hatte auch schon damit gearbeitet, dieses 32 64 bin ich auch drübergestolpert...

SG
25.06.2019 10:43 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
oehrle oehrle ist männlich
myCSharp.de-Mitglied

Dabei seit: 08.06.2009
Beiträge: 367
Entwicklungsumgebung: VisualStudio 2010/2012
Herkunft: Germany

Themenstarter Thema begonnen von oehrle

oehrle ist offline

Problem besteht immer noch

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo, ich habe mit einem Kollegen aus der IT gesprochen. Problem bei uns: WIr haben Office 365, und wie es aussieht haben wir ein MischMasch aus 32/64 Bit im Office-System. Das würde auch die Probleme erklären.

Hier mal ein Screenshot mit der Abfrage vom Exceltreiber:
C:\Windows\System32\odbcad32

oder mit

C:\Windows\SysWOW64\odbcad32.exe

ist identisch. Der Exceltreiber fehlt, siehe angehängtes Bild.
Link für diese Info:
 Link zum Tipp

Kann ich das irgendwie anders installieren, als mit dem Treiber von Access?
Wo muss der Treiber genau liegen, evtl. kann man das manuell einfügen?

oehrle hat dieses Bild (verkleinerte Version) angehängt:
3006-ODBC-1.gif
Volle Bildgröße

30.06.2019 15:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.835
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von oehrle:
Das würde auch die Probleme erklären.

Nein.
Wenn Deine Anwendung als x86 läuft werden x86 Treiber gesucht.
Läuft sie als x64 eben x64 Treiber. Der Mischmasch ist hier egal, solange das Matching stimmt.

Die Treiber kommen i.d.R. via Redistributable mit; sind also Teil des Office SDKs / Visual Studio Tools for Office.
Solche Schnittstellen werden i.d.R. bei keinem Microsoft Produkt mit einer einfachen Endkundeninstallation mitgeliefert.

Microsoft empfiehlt aber seit über 10 Jahren die Verwendung von Open XML und unterstützt zusätzlich ODF.
Alles problemlos via .NET anzusteuern - ohne ODBC.

Ich wüsste zwar nicht, dass Microsoft mit Office 365 (bzw. im aktuellen 2019er Zyklus) die Unterstützung von ODBC eingestellt hat.
Wenn es so wäre, wäre das eine erfreuliche Nachricht, ein absolut korrekter Schritt und würde ich persönlich auch sehr begrüßen.
Ich hoffe sogar, dass das so wäre.
30.06.2019 16:05 Beiträge des Benutzers | zu Buddylist hinzufügen
oehrle oehrle ist männlich
myCSharp.de-Mitglied

Dabei seit: 08.06.2009
Beiträge: 367
Entwicklungsumgebung: VisualStudio 2010/2012
Herkunft: Germany

Themenstarter Thema begonnen von oehrle

oehrle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ja Abt, danke für die Info.
Bei Open XML kann halt nicht einfach das komplette Sheet eingelesen werden, so wie ich das gesehen habe.
So wie ich das gesehen habe immer mit UsedRange, dann die Zeilen und Spalten durchtackern.
Das ist halt mit ODBC deluxe. Sheet einlesen wie eine DataTable, dann sofort im DataGrid anzeigen lassen.
Oder ist diese Funktionalität im OpenXML verborgen?
Office ist so eine Sache, bei jeder neuen Version funktioniert wieder irgend etwas nicht 100 % - tig.
Von dem her denke ich wäre das OpenXML zukunfssicherer.

Habe gerade eben OpenXML eingebunden und eine Tabelle eingelesen, hat geklappt (zeilenweise einlesen). Denke, damit werde ich nun leben müssen, dafür fällt dann halt das Treibergedöns weg.
Bischen umständlicher, aber funktioniert.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von oehrle am 30.06.2019 22:59.

30.06.2019 22:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.835
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Alles sofort in Speicher laden ist nicht Deluxe - und auch nen DataTable ist nicht Deluxe.
DataTable ist genauso obsolete wie Intertop mit Office: funktioniert zwar noch, aber es gibt in Summe bessere Alternativen.

Absolut zu begrüßen, dass die neuen SDKs (zB. auch die von Datenbanken) ein eingebautes Paging haben und so die Entwickler zwingen ordentlich zu programmieren.
Alles in den Speicher schubsen ist bequem für den Entwickler: bescheiden für den Anwender - und das System.

Zitat:
Office ist so eine Sache, bei jeder neuen Version funktioniert wieder irgend etwas nicht 100 % - tig.

Du sprichst von Software, die einen 3 Jahres-Zyklus hat und von Schnittstellen, für die seit 10 Jahren bessere Alternativen gibt...
Du machst es Dir hier gerade sehr einfach....
30.06.2019 22:54 Beiträge des Benutzers | zu Buddylist hinzufügen
oehrle oehrle ist männlich
myCSharp.de-Mitglied

Dabei seit: 08.06.2009
Beiträge: 367
Entwicklungsumgebung: VisualStudio 2010/2012
Herkunft: Germany

Themenstarter Thema begonnen von oehrle

oehrle ist offline

Gelöst - OpenXML verwenden

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also, danke für die Hilfe. OpenXML wirds tun.
30.06.2019 23:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 11 Monate.
Der letzte Beitrag ist älter als 11 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 05.06.2020 09:06