2016-07-21 14 views
-2

muss ich Daten aus Excel-Arbeitsblatt zugreifen, aber ich habe ein Problem, während die Daten kopieren (aus Excel)Fehler beim Zugriff auf Excel-Datentabelle

try 
{ 
    string strPath = FileName; 
    DataSet ds = new DataSet(); 
    string sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; " + "Data Source=" + strPath + "; " + "Extended Properties=Excel 8.0;"; 

    OleDbConnection objConn = new OleDbConnection(sConnectionString); 
    objConn.Open(); 
    OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + TableName + "] ", objConn); 
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(); 
    objAdapter1.SelectCommand = objCmdSelect; 
    objAdapter1.Fill(ds); 
    objAdapter1.Dispose();//DEBUGGER SKIP FROM HERE 
    objConn.Close(); 
    return ds.Tables[0]; 
} 
catch (Exception ex) 
{ 
    //Log your exception here.// 
    return (DataTable)null;//AND THEN JUMP TO HERE 
} 

das Problem ist, während das Debuggen Dataset nach Zeile objAdapter1.Fill(ds); Debugger überspringen die restliche Zeile und natürlich der Datensatz gibt null zurück, bitte helfen.

+1

Überprüfen Sie die Ausnahme. – CodeCaster

+0

Behalten Sie den Haltepunkt in der Dispose() -Zeile und prüfen Sie, ob der Datensatz gefüllt ist oder nicht? und überprüfen Sie auch die Ausnahme, die Sie erhalten. –

+0

habe 'Exception geworfen:' System.Data.OleDb.OleDbException 'in System.Data.dll' während des Debuggens. und ich setze Haltepunkt bei Dispose(), füllt das Dataset nicht und gibt die Ausnahme 'System.NullReferenceException' zurück (ich denke, weil das Dataset leer ist) –

Antwort

0

Ihre erweiterten Eigenschaften in der Verbindungszeichenfolge müssen in doppelte Anführungszeichen gesetzt werden. Versuchen Sie die folgende Zeile:

string sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; " + 
          "Data Source=" + strPath + "; " + 
          "Extended Properties=\"Excel 8.0;\""; 
Verwandte Themen