Wenn Sie diesen Fehler erhalten, wenn Sie versuchen, ACE von einer ASP.NET-Anwendung aus zu verwenden, ist die wahrscheinlichste Ursache, dass Sie eine der 32-Bit-Versionen installiert haben. Standardmäßig führt IIS auf einem 64-Bit-Betriebssystem Anwendungen in einem 64-Bit-Arbeitsprozess aus. 64-Bit-Prozesse können keine 32-Bit-DLLs laden. Wenn ein Aufruf an den ACE-Anbieter erfolgt, wird der 64-Bit-Prozess versuchen, eine 64-Bit-DLL zu finden. Wenn diese nicht vorhanden ist, erhalten Sie die Fehlermeldung, die Sie hierher gebracht hat.
In diesem Fall haben Sie zwei Möglichkeiten. Erstens können Sie die 64-Bit-Version 2010 installieren. Wenn Sie die 32-Bit-Version 2007 installiert haben, können Sie einfach die 64-Bit-Version 2010 parallel dazu installieren. Wenn Sie die 32-Bit-Version von 2010 installiert haben, müssen Sie diese deinstallieren und stattdessen die 64-Bit-Version 2010 herunterladen und installieren. Sie können nicht gleichzeitig die 32- und 64-Bit-Versionen des 2010-Anbieters installiert haben. Möglicherweise sind Sie bei der Installation auf Ihrem Entwicklungsrechner auch durch die Bit-Größe vorhandener Office-Installationen eingeschränkt.
Die zweite Option besteht darin, den Anwendungspool in IIS zu ändern, um 32-Bit-Anwendungen zu aktivieren. Wenn Sie die Vollversion von IIS verwenden, können Sie das Verwaltungstool verwenden, um dies zu tun (Systemsteuerung » Verwaltungstools » Internetinformationsdienste (IIS) Manager).
Zur besseren Verständnis verweisen Sie bitte auf den folgenden Link
13 Stimmen
Nur ein tangentiales Kommentar: Die Verwendung von OLEDB zum Lesen einer Excel-Datei ist eine veraltete Technologie, sehr langsam und wie Sie festgestellt haben, erfordert sie die manuelle Installation zusätzlicher Pakete auf Ihrer Zielmaschine. (Zugegeben, die Frage wurde 2011 gestellt.) Verwenden Sie stattdessen ClosedXml (verfügbar auf NuGet), das sofort einsatzbereit ist.
7 Stimmen
@ShaulBehr Es wäre schön gewesen, aber ClosedXml funktioniert nur für .xlsx-Dateien, nicht für .xls.
7 Stimmen
Wenn Sie Daten 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 Ihrer Meinung nach gibt. 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, erhielt ich die gleiche Fehlermeldung 'nicht auf Ihrem lokalen Computer registriert' wie der OP, für beide Excel 16 und Excel 2007 Dateiformate (oledb.16.0 und oledb.12.0 jeweils). Es ergibt Sinn, an diesem Punkt die Verluste zu akzeptieren und auf die Microsoft-Software zu verzichten.
1 Stimmen
Siehen 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
zeigt Ihnen, was auf dem Server ist, nicht auf Ihrem Lokalen Computer.6 Stimmen
Hier derjenige, der 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" dem Befehl hinzu: "C:\Verzeichnispfad\AccessDatabaseEngine_x64.exe" /passive