2010-03-12 32 views
7

Trong mã bên dưới thay vì chỉ định tên tab .. Có anyway chúng ta chỉ có thể nói "select * from [tab1]"? những gì từng tên tab có thể ..Đọc từ excel bằng cách sử dụng oledbcommand

OleDbCommand excelOledbCommand = 
          new OleDbCommand("Select * From [Sheet1$]", excelOledbCon); 
+0

gì * chính xác * làm bạn muốn thử? –

+2

đọc dữ liệu từ excel bằng C# –

+0

Có, nhưng vấn đề với tên trang tính là gì? –

Trả lời

16

này có thể giúp

Tips for reading Excel spreadsheets using ADO.NET

OleDbConnection.GetOleDbSchemaTable Method

Something như

OleDbConnection dbConnection = new OleDbConnection (@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\BAR.XLS;Extended Properties=""Excel 8.0;HDR=Yes;"""); 
dbConnection.Open(); 
try 
{ 
    // Get the name of the first worksheet: 
    DataTable dbSchema = dbConnection.GetOleDbSchemaTable (OleDbSchemaGuid.Tables, null); 
    if (dbSchema == null || dbSchema.Rows.Count < 1) 
    { 
     throw new Exception ("Error: Could not determine the name of the first worksheet."); 
    } 
    string firstSheetName = dbSchema.Rows [0] ["TABLE_NAME"].ToString(); 

    // Now we have the table name; proceed as before: 
    OleDbCommand dbCommand = new OleDbCommand ("SELECT * FROM [" + firstSheetName + "]", dbConnection); 
    OleDbDataReader dbReader = dbCommand.ExecuteReader(); 

    // And so on... 
} 
finally 
{ 
    dbConnection.Close(); 
} 
+0

chúng ta có thể đọc nó mà không có tên tờ như chỉ mục bảng? – Prageeth

+0

@Adriaan Stander chúng ta có thể đọc nó mà không có tên tờ như chỉ mục bảng? – daniele3004

2
public DataSet GetDataSetFromFile() 
{ 
    string strFileName = _FilePath; 
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;"; 
    strConn += "Data Source= " + strFileName + "; Extended Properties='Excel 8.0;HDR=No;IMEX=1'"; 
    OleDbConnection ObjConn = new OleDbConnection(strConn); 
    ObjConn.Open(); 
    string strSheetName = getSheetName(ObjConn); 
    OleDbCommand ObjCmd = new OleDbCommand("SELECT * FROM [" + strSheetName + "]", ObjConn); 
    OleDbDataAdapter objDA = new OleDbDataAdapter(); 
    objDA.SelectCommand = ObjCmd; 
    DataSet ObjDataSet = new DataSet(); 
    objDA.Fill(ObjDataSet); 
    ObjConn.Close(); 
    return ObjDataSet; 
} 

private string getSheetName(OleDbConnection ObjConn) 
{ 
    string strSheetName = String.Empty; 
    try 
    { 
     System.Data.DataTable dtSheetNames = ObjConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
     if (dtSheetNames.Rows.Count > 0) 
     { 
      strSheetName = dtSheetNames.Rows[0]["TABLE_NAME"].ToString(); 
     } 
     return strSheetName; 
    } 
    catch (Exception ex) 
    { 
     throw new Exception("Failed to get the sheet name", ex); 
    } 
} 
Các vấn đề liên quan