Comment récupèrer plusieurs types de données dans un DataSet (string et int)
cs_Ginji
Messages postés4Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention 1 février 2006
-
7 juil. 2005 à 13:39
cs_Ginji
Messages postés4Date d'inscriptiondimanche 11 janvier 2004StatutMembreDerniè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);
taoetc
Messages postés346Date d'inscriptionlundi 8 septembre 2003StatutMembreDernière intervention 3 septembre 20073 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
cs_Ginji
Messages postés4Date d'inscriptiondimanche 11 janvier 2004StatutMembreDerniè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