2017-08-16 1 views
0

Je dois sélectionner le nom de la feuille Lorsque j'importe des données d'Excel vers la base de données en utilisant ADO.net en C# sélectionnez le nom de la feuilleSélectionnez une feuille d'espacement dans les données d'importation d'Excel vers la base de données ADO.net en utilisant C#

OpenFileDialog op = new OpenFileDialog(); 
       op.Filter = "Excel Workbook| *.xls;*.xlsx;*.xlsm"; 
       if (op.ShowDialog() == DialogResult.Cancel) 
        return; 
       FileStream stream = new FileStream(op.FileName, FileMode.Open); 
       IExcelDataReader excelreader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
       DataSet result = excelreader.AsDataSet(); 

Comment puis-je choisir le nom de la feuille

Répondre

0

Voici le code source de cette bibliothèque que vous utilisez:

public System.Data.DataSet AsDataSet(bool convertOADateTime) 
    { 
     if (!_isValid) return null; 

     DataSet dataset = new DataSet(); 

     for (int ind = 0; ind < _workbook.Sheets.Count; ind++) 
     { 
      DataTable table = new DataTable(_workbook.Sheets[ind].Name); 

//table filling code snipped 

      if (table.Rows.Count > 0) 
       dataset.Tables.Add(table); 
      table.EndLoadData(); 
     } 
     dataset.AcceptChanges(); 
     Helpers.FixDataTypes(dataset); 
     return dataset; 
    } 

Il me semble que cet ensemble de données i t produit a N nombre d'objets DataTable à l'intérieur, chacun a un nom de table quel que soit le nom donné à la feuille lorsque le constructeur a été appelé: new DataTable(_workbook.Sheets[ind].Name);

Vous avez appelé votre DataSet result. Ce code liste donc les noms des tables à l'intérieur de votre ensemble de données:

foreach(DataTable dt in result.Tables) 
    Console.Out.WriteLine(dt.TableName); 
+0

je ne veux pas le nom de la table, j'ai 3 feuilles dans Excel je veux prendre les données dans la feuille 3 non 1 – AShalata

+0

Donc, quand vous avez dit "Comment puis-je sélectionner le nom de la feuille", vous ne vouliez pas connaître le nom de la feuille? Il est clair que mes compétences de lecture d'esprit ne sont pas ce qu'elles étaient ... Si vous voulez des données de la troisième feuille dans le classeur, c'est probablement dans 'result.Tables [2]'. Exécutez votre code, mettez-le en pause dans le débogueur sur la ligne AFTER 'DataSet result = excelreader.AsDataSet();', puis pointez sur 'result' avec la souris. Cliquez sur l'icône en forme de loupe qui apparaît ... –