2011-08-09 4 views
0

Je travaille actuellement sur l'importation de données de Excel feuille à SQL Server.J'ai écrit un code pour enlever les lignes vides de la feuille Excel .. maintenant j'essaie de voir les données dans datagridview en assignant le nom de la méthode à la source de données datagridview..mais il n'affiche aucune donnée.Peut-on me dire si je me trompe? Ceci est mon code ..les données ne sont pas affichées dans 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; 

    } 
} 

}

Répondre

0

Votre source de données devrait être un datatable dans l'ensemble de données, et non l'ensemble de données lui-même.

changement

public DataSet GetExcelData() 

à

public DataTable GetExcelData() 

et à la fin, ce retour:

return dsExcel.Tables[0]; 
+0

la remercie worked..but j'ai un doubt..i ont vu Quelques exemples que la source de données datagridview est Dataset.Je veux savoir pourquoi nous assignons datatable ici et pas dataset .. je suis nouveau dans le codage .. commençant à partir de zéro. – Nazima

+0

@Nazima Pensez à un ensemble de données en tant que base de données: il peut contenir plusieurs données. – LarsTech

Questions connexes