Lesen Von Excel -, Vermischt-Datentyp Ohne Ändern Der Registry-Schlüssel
Ich versuche C# zu Lesen, excel-Datei, die vermischt Datentyp. Unten ist mein connection string
var path = //xls location
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 komplette Extended Properties
im connection string werden soll
Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text
Jedoch ich wurde darüber informiert, dass in der Verbindungszeichenfolge, die TypeGuessRows=0
hat keine Bedeutung als der Wert , die direkt aus der Registry. Daher habe ich ändern müssen die Schlüssel manuell und entfernen Sie diese Eigenschaft aus der Verbindungszeichenfolge.
Die bestimmte registry-Schlüssel, der beteiligt war, ist:
Pfad:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
Schlüssel:
TypeGuessRows
Original-Wert = 8, um es Arbeit zu ändern in = 0
Ohne dabei die IMEX
funktioniert nicht, obwohl ich hinzufügen TypeGuessRows=0
in die Extended Properties
.
Jedoch, meine Firma verbietet das ändern von registry-Wert (strikt). Mir wurde gesagt, um alternativen zu finden, dies zu tun.
Kurz:
Gibt es eine Möglichkeit, Lesen, vermischt Datentyp excel Datei ohne dass ändern alle Registrierungsschlüssel (das ist durchaus eine gängige Praxis)?
Weiteres Thema:
Haben Sie erlebt? Gibt es Möglichkeiten, dass wir TypeGuessRows=0
von der connection string nur ohne das ändern der registry-Schlüssel (Rücknahme aus meiner obigen Prämisse).
, Wenn die Dinge nicht mit OleDb
:
Gibt es alternativen neben OleDb
?
Ich schätzen jede Beratung oder Anregungen.
Hinsichtlich
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tun können, ist zu verlangen, dass header in der ersten Zeile der Excel-und Verbindungs-string zu
Der Schlüssel hier ist, um HDR=No (KEIN HEADER), aber Sie haben seit dem header jetzt jede Spalte wird so behandelt, als string (text), und Sie können tun, Analyse oder Validierung auf jeder Zelle ein Wert. Natürlich müssen Sie zu überspringen oder zu entfernen, die erste Zeile, denn Sie enthält header-Informationen.
Anstatt
OleDb
ich kenne verwenden Excel Data Reader. Es arbeitet stark! Sehr zu empfehlen!