2011-11-22 23 views
5

Sto scrivendo un'applicazione che utilizza un OleDbAdapter per accedere alle informazioni in un file Excel. Quando provo a creare una connessione con il file Excel se l'utente ha un altro file Excel (non correlato) aperto sul desktop, il file a cui è connesso l'adattatore si apre in questa finestra in formato di sola lettura. Se l'utente non ha un'istanza di Excel aperta, i file rimangono nascosti.OleDbConnection() apre un file Excel in qualsiasi finestra di Excel aperta. Ma non se non c'è una finestra aperta

Ecco il mio codice:

foreach (item app in apps) 

{ 

    DataTable dt = new DataTable(); 

    string CnStr = ("Provider=Microsoft.Jet.OLEDB.4.0;" + ("Data Source=" 
        + ((app.FilePath) + (";" + "Extended Properties=\"Excel 8.0;\"")))); 

    string OleDbString = ("Select * from [" + app.SheetName + "$]");        

    OleDbDataAdapter Adapter = new OleDbDataAdapter(); 

    var conn = new OleDbConnection(CnStr); 
    conn.Open(); <----------------------------This is where the files are being opened. 

    var cmd = new OleDbCommand(OleDbString, conn); 

    Adapter.SelectCommand = cmd; 


    Adapter.Fill(app.DataTable); 

    conn.Close(); 

    Adapter.Dispose(); 

} 

Qualcuno sa perché il OleDbConnection() avrebbe aperto un file se un'istanza di Excel era aperta, ma non sarebbe se non lo era?

+0

sfortuna con questo? Sto avendo lo stesso esatto problema. – jpints14

risposta

-1

È necessario inserire il codice per inizializzare la variabile app. Molto probabilmente la risposta alla tua domanda è lì dentro. Utilizza un metodo GetObject o CreateObject?

Problemi correlati