2015-06-05 5 views
2

У меня есть лист Excel, в котором указаны данные о заработной плате сотрудников в отделе. Просто мне нужно сохранить эти данные в MySql.чтение n-й строки в oledbdatareader в C#

Когда я использую oledbdatareader, он читается из первой строки. Но я должен выбирать из разных строк. Ниже им показана проба образца excel

Dept Software   
Name Gross Deductions NetPay 
AAA 10000 2000  8000 
BBB 10000 1000  9000 
Dept HR  
Name Gross Deductions NetPay 
CCC 20000  1000  19000 

Здесь каждая строка представляет собой ряд. Я должен взять третий ряд, четвертую строку, а затем последнюю строку (в этом примере).

AAA 10000 2000  8000 
BBB 10000 1000  9000 
CCC 20000 1000  19000 

Как я могу это достичь? Я пробовал вот так.

protected void Button2_Click(object sender, EventArgs e) 
    {   

    string path = "C:\\Payslip.xls"; 
    string query = "SELECT * FROM [Sheet3$]"; 
    OleDbConnection conn = new OleDbConnection(); 
    conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = '" + path + "'" + @";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0"""; 
    conn.Open();    

try 
{ 
     OleDbCommand ocmd = new OleDbCommand(query, conn); 
     OleDbDataReader odr = ocmd.ExecuteReader();    

     while (odr.Read()) 
     {        
       name = odr[0].ToString();    
       gross = odr[1].ToString();  
       ded = odr[2].ToString();     
       net = odr[3].ToString();   

       connection = new MySqlConnection(connectionString); 
       connection.Open(); 

       String sQuery = "insert into salary (EmployeeName, Gross) values(@a, @b)"; 

       MySqlCommand cmd = new MySqlCommand(sQuery, connection); 
       cmd.Parameters.AddWithValue("a", name); 
       cmd.Parameters.AddWithValue("b", gross); 

       cmd.ExecuteNonQuery(); 
       connection.Close(); 
      }  
     }  
     catch (Exception ex)  
     { 
      Label1.Text = ex.Message;       
     }     
} 
+0

Нет встроенной поддержки от 'DataReader' прочитать определенную строку, вы должны сделать модульную арифметику себя для достижения этой цели .. –

ответ

1

Вы можете использовать OleDbDataAdapter, чтобы читать все строки, чтобы заполнить набор данных. Затем выберите строку по индексу в datatable этого набора данных. Примером использования OleDbDataAdapter является,

DataAdapter.Fill(Dataset)