2013-11-25 47 views
1

我有一個兩列的excel文件。我想獲得一列和所有行,然後是第二列和所有行。以同樣的方式,我應該有12列的列重複列。excel文件讀取一列,並連續行

enter image description here

我用下面的代碼,但我沒有得到需要的地方,我在第一列越來越Emp_name輸出,但我應該得到它在第二列。

for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++) 
{ 

    if (Cnum == 1) 
    { 
     dt.Columns.Add((ShtRange.Cells[1, Cnum] as Excel.Range).Value2.ToString()); 
     for (int Rnum = 1; Rnum <= 9; Rnum++) 
     { 
      dt.Rows.Add((ShtRange.Cells[Rnum, 1] as Excel.Range).Value2.ToString()); 

     } 
    } 
    else if (Cnum == 2) 
    { 

     dt.Columns.Add((ShtRange.Cells[1, Cnum] as Excel.Range).Value2.ToString()); 


     for (int Rnum = 1; Rnum <= 9; Rnum++) 
     { 

      dt.Rows.Add((ShtRange.Cells[Rnum, 2] as Excel.Range).Value2).ToString(); 

     } 
    } 
+2

確定,......這段代碼出錯索姆ehow? – doctorlove

回答

0

坦白說,我不認爲有在你的代碼的任何問題......這裏有一個簡單的方法獲得的您的Excel內容dataset

  ds = new DataSet(); 
      string myConnStr = ""; 
      if (txtdestination.Contains(".xlsx")) 
      { 
       myConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtdestination.ToString() + ";" + "Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\""; 
      } 
      else 
      { 

       myConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtdestination.ToString() + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""; 
      } 
      OleDbConnection myConn = new OleDbConnection(myConnStr); 
      OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", myConn); 
      OleDbDataAdapter adapter = new OleDbDataAdapter(); 
      adapter.SelectCommand = cmd; 
      myConn.Open(); 
      adapter.Fill(ds); 


      myConn.Close(); 

注意你需要有SHEETNAME爲Sheet1

txtdestination是您的Excel文件的路徑