2013-11-25 24 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文件的路径