2013-11-26 81 views
0

我有excel文件與2列(empid,empname),我必須閱讀第1列8行然後第2列8行,通過以下代碼我得到第一列8行,但在第二列的行或不填充內部,他們只填寫第一列的行。這是我的代碼將excel文件移動到datagridview

   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()); 

        } 
       }} 
      for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++) 
      { 
        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(); 
        } 
       } 
      } 
+0

excel文件的極限時間是?(.csv,.xls,.xlsx) – Tinwor

回答

1

如果我理解正確的,問題是,從Excel文件中的第二列的值不會出現在DataGridView控制的第二列。那麼,這個問題就出現在你填充網格的方式上,因爲你的代碼所做的事情是它實際上只爲第一列提供的值附加行。這裏是一個簡短的解決問題的方法:

dt.Columns.Add("c1", "First column"); 
dt.Columns.Add("c2", "Second column"); 
for (int Rnum = 1; Rnum <= 9; Rnum++) 
{ 
    dt.Rows.Add(
      (ShtRange.Cells[Rnum, 1] as Excel.Range).Value2.ToString(), 
      (ShtRange.Cells[Rnum, 2] as Excel.Range).Value2.ToString()); 
} 

此外,你可能想通過增加空行首先建立網格結構,在那之後,你可以填充它們是這樣的:

dt[Cnum - 1, Rnum - 1].Value = (ShtRange.Cells[Rnum, Cnum] as Excel.Range).Value2; 
0

一完全不同的解決方案是查看OleDbConnection提供程序將整個Excel文件加載到DataTable中,然後直接將Datatable綁定到DataGridView。

  OleDbConnection conn = new OleDbConnection(strConn); 
      conn.Open(); 
      DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });////gets the table from the tempFile 

      List<DataTable> listInnerTable = new List<DataTable>(); 

      foreach (DataRow dr in schemaTable.Rows) 
      { 
       DataTable innerTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, dr.ItemArray[2], null }); 
       listInnerTable.Add(innerTable); 
      } 

的綁定:

myGridView.DataSource = listInnerTable; 
myGridView.DataBind(); 

這樣它會與不同的Excel文件或新列的工作添加到您正在使用的一個。