2013-12-16 13 views
9

sto usando OleDbDataAdapter per estrarre DataSet da file excel, ma ho problemi con SELECT istruzione all'internoCome selezionare da qualsiasi foglio di calcolo in file Excel utilizzando OleDbDataAdapter

DataSet excelDataSet = new DataSet(); 
using (OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString)) 
{ 
    con.Open(); 
    OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter("select * from [Name of spreadsheet]", con); 
    cmd.Fill(excelDataSet); 
    con.Close(); 
} 

Se vedete che io ho "select * from [Name of spreadsheet]", ma io è necessario ottenere fogli di calcolo o, ad esempio, il 1 ° foglio di calcolo, ma il nome di questo foglio di lavoro può essere qualsiasi cosa.

Come specificare? Si tratta di caratteri speciali come "select * from [%]"

risposta

16

È necessario conoscere il nome del foglio per applicare l'istruzione di selezione su di esso.
E è necessario aggiungere il carattere speciale $ alla fine del nome.

Supponendo di avere un foglio di nome MyFirstSheet quindi è possibile selezionare le righe da esso con

OleDbDataAdapter cmd = new OleDbDataAdapter("select * from [MyFirstSheet$]", con); 

Nel caso in cui non si conoscono i nomi dei fogli che si potrebbe chiamare

using (OleDbConnection con = new OleDbConnection(connectionString)) 
{ 
    con.Open(); 
    DataTable dt = con.GetSchema("Tables"); 
    string firstSheet = dt.Rows[0]["TABLE_NAME"].ToString(); 
    ...... work with the first sheet ..... 
} 

Questo esempio dovrebbe darti il ​​nome del primo foglio nel file excel (gli altri fogli sono disponibili nelle file successive dopo il primo)

+1

Grazie! Funziona come un fascino! Upvote e accept =) Legge sugli schemi in OleDbConnection =) – Bryuk