Ich versuche, C# zu verwenden, um eine Excel-Datei zu lesen, die gemischte Datentypen enthält. Hier ist mein Verbindungszeichenfolge
var path = //xls Standort
var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;IMEX=1;'");
Forschung hat mich gelehrt, dass die vollständigen Extended Properties
in der Verbindungszeichenfolge sein sollten
Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text
Allerdings wurde mir mitgeteilt, dass in der Verbindungszeichenfolge die TypeGuessRows=0
keine Bedeutung hat, da der Wert direkt aus der Registrierung abgeleitet wird. Daher muss ich den Schlüssel manuell bearbeiten und diese Eigenschaft aus der Verbindungszeichenfolge entfernen.
Der bestimmte Registrierungsschlüssel, der beteiligt war, ist:
Pfad:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
Schlüssel:
TypeGuessRows
Ursprünglicher Wert = 8, um es funktionieren zu lassen, ändere in = 0
Ohne dies wird IMEX
nicht funktionieren, auch wenn ich TypeGuessRows=0
zu den Extended Properties
hinzufüge.
Allerdings verbietet mein Unternehmen das Ändern des Registrierungswerts (streng). Mir wurde gesagt, Alternativen dafür zu finden.
Kurz gesagt:
Gibt es einen Weg, eine Excel-Datei mit gemischten Datentypen zu lesen, ohne einen Registrierungsschlüssel zu ändern (was recht häufig vorkommt)?
Weiteres Thema:
Hast du das schon erlebt? Gibt es Möglichkeiten, dass wir TypeGuessRows=0
nur von der Verbindungszeichenfolge aus setzen können, ohne den Registrierungsschlüssel zu ändern (was meine obige Annahme ausschließt).
Wenn es mit OleDb
nicht funktioniert:
Gibt es Alternativen neben OleDb
?
Ich schätze jeden Rat oder Vorschlag.
Grüße