Diese Konfigurationen haben im Januar 2020 auf meinem neuen Maschinen-Build funktioniert:
(1 - nur x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installiert mit /passive Argument, VStudio-Build-Einstellungen explizit auf x64 gesetzt, mit folgendem Verbindungszeichenfolge: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:...\MeineDatenbank.accdb
(2 - x64 oder x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installiert mit /passive Argument, PLUS AccessDatabaseEngine 2010 (32bit) installiert mit /passive Argument, VStudio build settings auf AnyCPU gesetzt, mit folgender Verbindungszeichenfolge: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:...\MeineDatenbank.accdb
(3 - nur x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) installiert mit /passive Argument, VStudio build settings auf x86 gesetzt, mit folgender Verbindungszeichenfolge: Provider= Microsoft.ACE.OLEDB.12.0; Data Source=D:...\MeineDatenbank.accdb
FEHLERHAFTE NOTIZEN
Die Verwendung des ACE.OLEDB.12.0 x64-Providers in der Verbindungszeichenfolge scheiterte nur mit dem oben genannten AccessDatabaseEngine_x64 2016 als in (1) installiert.
Die Verwendung von AnyCPU in den Visual Studio Build-Einstellungen ist in (1) gescheitert. Die Einstellung auf x64 ist erforderlich. Möglicherweise liegt dies daran, dass AnyCPU bedeutet, dass VStudio zur Kompilierungszeit einen x32 ACE.OLEDB.nn.0-Provider sehen muss.
Der ACE.OLEDB.12.0 2016 x32 /passive-Motor würde nicht installieren, wenn er x64-Anwendungen sah. (Der ACE.OLEDB.12.0 2010 x32 /passive-Installer funktionierte.)
SCHLUSSFOLGERUNGEN
Um x64-Build-Einstellungen zu verwenden, benötigen Sie den 2016 x64-Datenbankmotor UND den ACE.OLEDB.16.0 Verbindungszeichenfolgen-Provider UND explizite x64-Build-Einstellungen, um mit Office 365 im Januar 2020 zu arbeiten. Die Verwendung der /passive-Option erleichtert die Installationen. Kredit an denjenigen, der diesen Tipp gepostet hat!
Um AnyCPU zu verwenden, musste ich sowohl den ACE.OLEDB.12.0 2010 x32-Motor als auch die ACE.OLEDB.16.0 x64-Motoren installiert haben. Auf diese Weise konnte Vstudio zur "AnyCPU"-Kompilierungszeit sowohl x32- als auch x64-Motoren sehen. Ich konnte die Anbieterverbindungszeichenfolge auf ACE.OLEDB.12.0 für den Betrieb von x32 oder auf ACE.OLEDB.16.0 für den Betrieb von x64 ändern. Beides hat gut funktioniert.
Um x86-Build-Einstellungen zu verwenden, benötigen Sie den 2010 x32-Datenbankmotor UND den ACE.OLEDB.12.0 Verbindungszeichenfolgen-Provider UND explizite x86-Build-Einstellungen, um mit Office 365 x32 im Januar 2020 zu arbeiten.
13 Stimmen
Nur ein kurzer Kommentar: Die Verwendung von OLEDB zum Lesen einer Excel-Datei ist veraltete Technologie, sehr langsam und wie Sie festgestellt haben, erfordert das manuelle Installation von zusätzlichen Paketen auf Ihrem Zielrechner. (Zugegeben, die Frage wurde 2011 gestellt.) Verwenden Sie stattdessen ClosedXml (verfügbar auf NuGet), das sofort einsatzbereit ist.
7 Stimmen
@ShaulBehr Wäre schön gewesen, aber ClosedXml funktioniert nur für .xlsx-Dateien, nicht für .xls.
7 Stimmen
Wenn Sie in Sql Server importieren, können Sie diese Abfrage von SSMS ausführen:
execute master.dbo.xp_enum_oledb_providers
Es wird Ihnen sagen, welche Anbieter es denkt, die Sie haben. Es hat mir gesagt, dass ich sowohl Microsoft.ACE.OLEDB.16.0 als auch Microsoft.ACE.OLEDB.12.0 habe, aber als ich versuchte, Daten zu importieren, bekam ich dasselbe 'nicht auf Ihrem lokalen Rechner registriert', wie der OP, für beide Excel 16 und Excel 2007-Dateiformate (oledb.16.0 und oledb.12.0 entsprechend). Es macht Sinn, an diesem Punkt Ihre Verluste zu akzeptieren und auf die Microsoft-Software zu verzichten.1 Stimmen
Sehen Sie auch diese Antwort stackoverflow.com/a/14401857/21579 für den Unterschied zwischen Microsoft.Jet.OleDb und Microsoft.Ace.OleDb.
4 Stimmen
@user1040323,
execute master.dbo.xp_enum_oledb_providers
sagt Ihnen, was auf dem Server ist, nicht auf Ihrer lokalen Maschine.6 Stimmen
Hier das, was funktionieren sollte; - Es ist: Nicht wirklich dokumentiert, aber ich habe einen Weg gefunden, um sowohl die 32-Bit- als auch die 64-Bit-Versionen zu installieren. Fügen Sie einfach das Kommandozeilenargument "/passive" zum Befehl hinzu: "C:\Verzeichnispfad\AccessDatabaseEngine_x64.exe" /passive