Comment récupèrer plusieurs types de données dans un DataSet (string et int)

cs_Ginji Messages postés 4 Date d'inscription dimanche 11 janvier 2004 Statut Membre Dernière intervention 1 février 2006 - 7 juil. 2005 à 13:39
cs_Ginji Messages postés 4 Date d'inscription dimanche 11 janvier 2004 Statut Membre Dernière intervention 1 février 2006 - 11 juil. 2005 à 13:03
Bonjour,
En ce moment, j'effectue une lecture d'une plage de cellules à partir d'un fichier excel en utilisant les interops et un dataset.
Il me reste toutefois un problème, car ma plage de cellule contient des nombres mais les entêtes sont des string.

Le dataset lis tout les doubles et les enregistrent mais pour ce qui est des string, la valeur exacte est remplacée par System.DBNull.

Je dois absolument récupèrer les cellules de la première ligne pour pouvoir choisir quelle colonne prendre lors de mon traitement.

Ma question : Peux on avoir dans un dataset plusieurs types de données enregistrés?


voilà le code de ma création du DataSet

public System.Data.DataSet RecupXls(string pathFichier, string nomFeuille, string plage)
{
try
{
OleDbConnection excelConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathFichier + ";Extended Properties='Excel 8.0;HDR=No;'");
OleDbCommand excelCommand = new OleDbCommand("SELECT * FROM [" + nomFeuille + "$"+plage+"]", excelConnection);
OleDbDataAdapter excelDataAdapter = new OleDbDataAdapter(excelCommand);
DataSet excelDataSet = new DataSet();

// récupération des données de la table
excelDataAdapter.Fill(excelDataSet, nomFeuille);

return excelDataSet;

}
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
return null;
}


}

3 réponses

taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
8 juil. 2005 à 09:19
On peut avoir plusieurs type de données enregistré, mais aps sur une colonne,
un dataset, c'est un peu comme une base de données, avec des tables des liens et des types de données.

Pour ta question, si tu veux recupérer la premeire ligne de ton fichier excel, lance apres ta récupération un
ExecuteReader() pour lire la premeire ligne
Au lieu de faire un fill tu fais un truc du style:

OleDbConnection excelConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathFichier + ";Extended Properties='Excel 8.0;HDR=No;'");
OleDbCommand excelCommand = new OleDbCommand("SELECT * FROM [" + nomFeuille + "$"+plage+"]", excelConnection);
OleDbDataReader monReader;

excelconnection.Open();

monReader= excelcommand.ExecuteReader();

if( monReader.read())
{
// lecture des entetes de colonnes, il doit exister une propriété pour savoir combien de colonne sont présentes

}
monreader.close();
excelconnection.Close();
0
cs_Ginji Messages postés 4 Date d'inscription dimanche 11 janvier 2004 Statut Membre Dernière intervention 1 février 2006
11 juil. 2005 à 09:36
je te remercie j'avais pas pensé à ça je vais essayer ta solution
0
cs_Ginji Messages postés 4 Date d'inscription dimanche 11 janvier 2004 Statut Membre Dernière intervention 1 février 2006
11 juil. 2005 à 13:03
la solution ne marche pas , même probleme qu'avec le dataset, je pense que la seule solution c'est soit de forcer le type de données du dataSet, soit décomposer la plage en 2 sous plages
0
Rejoignez-nous