2016-04-19 5 views
0

Versucht, Daten von * .XLS Datei zu lesen. Ich bin in der Lage, alle Zellenfolgen zu lesen, aber nicht in der Lage, die Zahlen in den Zellen zu lesen. Ich habe versucht, mit .ToString() -Methode ohne Erfolg. Zurück zu einer Datenbank null.OleDbDataReader Wie Nummerntypen gelesen werden?

Code:

public xlsConverter(string excelFilePath, int numColumns) 
     { 
      string cnnStr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties='Excel 8.0;HDR=No;'", excelFilePath); 
      string queryStr = "SELECT * FROM [Sheet1$]"; 

      using (OleDbConnection connection = new OleDbConnection(cnnStr)) 
      { 
       OleDbCommand command = new OleDbCommand(queryStr, connection); 
       connection.Open(); 
       OleDbDataReader reader = command.ExecuteReader(); 

       while (reader.Read()) 
       { 
        for(int i = 0; i <= numColumns; i++) 
        { 
         cleanedString.AppendFormat("{0}{1}", (reader[i].ToString()), "|"); 
        } 
        cleanedString.AppendLine(); 
       } 

       reader.Close(); 
      } 
     } 

cleanedString.AppendFormat ("Row [{0}], Datatype [{1}], String [{2}], Spalte [{3}] | - | ", Zähler, (Leser [i]). GetType(), Leser [i] .ToString(), i);

Produziert:

Row [98], Datatype [System.DBNull], String [], Spalte [4] | - |

Spalte 4 enthält gemischte Strings und Zahlen, zum Beispiel: 1300 2341, 5000, 4000 (DED), 1243

Versuchte „getint, GetValue, Parse, 'Casting' verwenden, ToString() usw. ", aber null ist null! Wer möchte mich in die richtige Richtung führen?

Beispiel XLS-Datei:

https://github.com/abflett/adamflett_ca

https://github.com/abflett/adamflett_ca/blob/master/sample.xls

+0

Wenn Sie sicher sind, ist es eine Zahl, werfen nur auf die Art Sie wollen. z.B. (int) Leser [i]; – detellda

+0

Versuchte diese und sogar geändert zu: cleanedString.AppendFormat ("Zeile [{0}], DataType [{1}], String [{2}], Spalte [{3}] | - |", Zähler, (Leser [i]). GetType(), Leser [i] .ToString(), i); System.DBNull wurde für Zellen zurückgegeben, die über einen Datentyp mit der Nummer verfügen. Ich denke, vielleicht verliere ich Daten mit dem Befehl, Abfrage oder Verbindungszeichenfolge? – abflett

+0

Können Sie einige Beispieldaten aus der .xls-Datei geben? – detellda

Antwort

0

Nahm einige graben, aber am Ende eine einfache Lösung zu sein.

Die Verbindungszeichenfolge war das Problem.

string cnnStr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0'", excelFilePath); 

Importmixed = Text; TypeGuessRows = 0

^wurde hinzugefügt!

Youtube Video fand ich es an: https://www.youtube.com/watch?v=jhPp_Hz54BU

und bereits hier bei Stackoverflow answerd: Help with a OleDB connection string for excel files

Verwandte Themen