2010-11-14 6 views
1

salutationsdonnées de lecture de la feuille Excel containg plusieurs tables C#

permet de dire que j'ai un fichier Excel contient une feuille ,, dans cette feuille il y a 2 tables un pour l'employé avec des champs [EMPID, EmpName, titre] ,, , et une autre table pour le département avec les champs [deptId, deptName], je sais comment puis-je lire les données de ce fichier Excel et charger les deux tables dans les données une pour l'employé et l'autre pour le département, j'ai cherché et trouvé que je peut interroger par feuille par "select * from [feuille $]" après avoir fait un OleDbConnection avec Excel, mais dans mon cas, la feuille contient 2 tables différentes dans la structure ..

thnx

je travaille sur l'application windows ,, VS2010 C#

Répondre

0

Faire un SheetSelectionForm Mettez ces codes sur votre formulaire et appelez PopulateSheetsOfExcelFile (excelFilePath); méthode. Ce formulaire vous montrera les noms des feuilles Excell et vous pouvez sélectionner la feuille que vous voulez lire d'Excel. Comme vous le dites, ces tables ont une structure différente, vous devez donc créer des DataTables différents pour chaque feuille d'Excel. Il ya un article sur la façon de lire le fichier Excel au http://www.serkanhekimoglu.com/?p=105 vérifier cela. vérifier les blocs de code. et vous pouvez me demander n'importe quoi. Il existe une autre façon de lire tout Excel avec DataAdapter. Avec ma méthode, vous créez un DataTable personnalisé et remplissez-le en donnant un excellent index de colonne/ligne. De quelle manière voulez-vous utiliser?

using System.Data.OleDb; 


private void SelectItem() 
     { 
      ExcelSheetName = excelSheetsListBox.SelectedItem != null ? 
       excelSheetsListBox.SelectedItem.ToString() : string.Empty; 
      Close(); 
     } 

private void PopulateSheetsOfExcelFile(string excelFilePath) 
     { 
      try 
      { 
       String connString = string.Empty; 

       try 
       { 
             connString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\"", excelFilePath); 
        using (OleDbConnection objConn = new OleDbConnection(connString)) 
        { 
         objConn.Open(); 
         using (DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null)) 
         { 
          if (dt == null) 
           return; 

          excelSheetsListBox.Items.Clear(); 

          for (int i = 0; i < dt.Rows.Count; i++) 
          { 
           DataRow row = dt.Rows[i]; 
           excelSheetsListBox.Items.Add(row["TABLE_NAME"].ToString()); 
          } 
         } 
        } 
       } 
       catch (Exception exA1) 
       { 
             connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"", excelFilePath); 
        using (OleDbConnection objConn = new OleDbConnection(connString)) 
        { 
         objConn.Open(); 
         using (DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null)) 
         { 
          if (dt == null) 
           return; 

          excelSheetsListBox.Items.Clear(); 

          for (int i = 0; i < dt.Rows.Count; i++) 
          { 
           DataRow row = dt.Rows[i]; 
           excelSheetsListBox.Items.Add(row["TABLE_NAME"].ToString()); 
          } 
         } 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(“HATA”); 

       ExcelSheetName = string.Empty; 
       Close(); 
      } 
     } 
+0

thnx Serkan je vais essayer le code ur et je reviendrai yo u et laissez u savoir si j'ai des questions ou non ,,, THNX nouveau – hatem

+0

Ok. L'article est écrit en turc, si vous ne connaissez pas le turc, demandez-moi de traduire. –

+0

je wana vous demander quelque chose dans le code que vous avez posté ,,, que voulez-vous dire par// excelSheetsListBox.Items.Add (row ["TABLE_NAME"]. ToString()); Que voulez-vous dire par ["nom_table"] ?? – hatem