Laden...

[gelöst] Kann ich OLEDB in mein Programm integrieren und mit ausliefern?

Erstellt von Edzio vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.587 Views
E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 7 Jahren
[gelöst] Kann ich OLEDB in mein Programm integrieren und mit ausliefern?

Hallo zusammen,

ich nutze um eine Exceltabelle auszulesen die OLED Technologie:

var excelFile = verbindung_zu_definitionen.getPfad();
                var hdr = "Yes";                    //hasHeaders ? "Yes" : "No";
                var binding_excel = new BindingSource();
                string connectionString;
                //Prüfen welches Excel OLEDB geladen werden soll
                if (excelFile.Substring(excelFile.LastIndexOf('.')).ToLower() == ".xlsx")
                    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile +
                                ";Extended Properties=\"Excel 12.0 Macro;HDR=" + hdr + ";IMEX=1\"";
                else
                    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + 
                                ";Extended Properties=\"Excel 8.0;HDR=" + hdr + ";IMEX=1\"";

Sämtliche Kollegen nutzen mein Tool ohne Probleme
(Win7 64bit Office 2007)
Nun hat ein Kollege einen neuen PC bekommen mit
Win7 64bit Office 2013
und bei ihm funktioniert der Aufruf nicht mehr,
es kommt der Fehler:> Fehlermeldung:

Microsoft.ACE.OLEDB.12.0 Provider ist nicht auf dem lokalen Computer regisitriert.

Nach meiner Recherche fand ich sämtliche Angaben, dass er folgendes installieren soll:
https://www.microsoft.com/de-de/download/confirmation.aspx?id=23734

Meine Frage,
kann ich da auch irgendwas in mein Programm über den VS2015 einbinden (Verweis o.Ä.), so dass nicht jeder der nun ein neues Office bekommt selbstständig etwas installieren muss?

Wollte schon den Verweis
Microsoft Office 12.0 Access Database Engine Object Library
hinzufügen, das nimmt er allerdings nicht.

Danke im Voraus.

Gruß Frank

5.299 Beiträge seit 2008
vor 7 Jahren

ich kenns mit Office-Interop, dasses (auch) drauf ankommt, wie kompiliert ist.
Kompiliert man für 32 bit (x86), dann kennt er Jet-OleDb, kompiliert man für x64, dann kennt er ACE-OleDb.
Kompiliert man "AnyCpu", dann hängts vonne Entwickler-Maschine ab.

Vlt. hat das ja mit deim Prob zu tun, probier mal damit herum.

Der frühe Apfel fängt den Wurm.

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 7 Jahren

ok danke, dann versuch ich das mal.
Irgendeinen Verweis gibt es nicht, den ich einbinden könnte?

F
10.010 Beiträge seit 2004
vor 7 Jahren

Nein.

Du musst den entsprechenden Treiber ( hier die AccessEngine ) installieren.
Es gibt keinen Weg drum herum.

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 7 Jahren

ok schade,
dann müßen die Kollegen, welche ein neues Office bekommen eben die Datei nachinstallieren.
Auch doof gelöst von Microsoft.

Danke für eure Hilfe.

Gruß Frank

16.807 Beiträge seit 2008
vor 7 Jahren

Dafür kann Microsoft recht wenig.
Es wäre viel eher einfach doof alles auf einer Maschine zu installieren, was vielleicht 0,01% der Office Benutzer benötigt.
Du als Entwickler musst dafür sorgen, dass die Dependencies vorhanden sind; nicht Microsoft.