2011-08-09 41 views
0

現在、Excelシートからデータをsql server.iにインポートしていますが、Excelシートから空の行を削除するためのコードが記述されています。データグリッドビューでデータを表示しようとしていますDataGridviewデータソースのメソッド名です。しかし、正しいか間違っているのか誰も私に言うことはできません。どのデータも表示されません。これはデータがデータグリッドビューに表示されない

public partial class Form9 : Form 
{ 
    DataSet dsExcel = new DataSet(); 

    public Form9() 
    { 
     InitializeComponent(); 
    } 

    private void btnUpload_Click(object sender, EventArgs e) 
    { 
     //String input = string.Empty; 
     OpenFileDialog filepath = new OpenFileDialog(); 
     filepath.Filter = "Excel Files(*.xls)|*.xls|Excel Files(*.xlsx)|*.xlsx|Text Files(*.txt)|*.txt|All Files(*.*)|*.*"; 
     filepath.InitialDirectory = "C:"; 
     filepath.Title = "Select a file"; 
     if (filepath.ShowDialog() == DialogResult.OK) 
      txtExcelFile.Text = filepath.FileName; 
     if (txtExcelFile.Text == string.Empty) 
      return; 
    } 

    private void btnImport_Click(object sender, EventArgs e) 
    { 


     OleDbConnection cnn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + txtExcelFile.Text + "';Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'"); 
     cnn.Open(); 
     try 
     { 

      OleDbDataAdapter data = new OleDbDataAdapter("select * from [Customers$]", cnn); 

      data.Fill(dsExcel); 

      dgvCustomers.ColumnHeadersVisible = false; 
      dgvCustomers.DataSource = GetExcelData(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      //cnn.Close(); 
     } 

    } 

     public DataSet GetExcelData() 
     { 
     DataTable ExcelTable = new DataTable(); 
     List<int> rowToRemove = new List<int>(); 
     //DataRow ExcelRow = new DataRow(); 

     foreach (DataRow excelrow in dsExcel.Tables[0].Rows) 
     { 
      bool IsEmpty = false; 
      foreach (object item in excelrow.ItemArray) 
      { 
       if (String.IsNullOrEmpty(item.ToString())) 
       { 
        IsEmpty = true; 
        break; 

       }     
       else 
       { 
        IsEmpty = false; 

       } 
      } 
      if (IsEmpty) 
      { 
       rowToRemove.Add((dsExcel.Tables[0].Rows.IndexOf(excelrow))); 
      } 

     } 

     for (int i = rowToRemove.Count - 1; i >= 0; i--) 
     { 
      dsExcel.Tables[0].Rows.RemoveAt(rowToRemove[i]); 

     } 
     return dsExcel; 

    } 
} 

}

答えて

0

あなたのデータソースは、データセット内のデータテーブルではなく、データセット自体でなければなりません。..私のコードです。

変更

public DataSet GetExcelData() 

public DataTable GetExcelData() 

にし、最後に、これを返す:

return dsExcel.Tables[0]; 
+0

おかげで、それは私が見てきた中でdoubt..i 1を持っているworked..but datagridviewデータソースがDatasetである例はほとんどありません。なぜデータセットではなくデータセットを割り当てているのかを知りたいのです。私は新しいコーディングで最初から始めます。 – Nazima

+0

@ Nazimaデータセットをデータベースと考えると、複数のデータテーブルを保持することができます。 – LarsTech

関連する問題