[C#] Titre de colonnes xls

Signaler
Messages postés
8
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
16 janvier 2007
-
Messages postés
8
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
16 janvier 2007
-
Bonjour,

J'ai 2 petits problèmes avec une lecture de fichier xls.

1/ J'utilise une connection ODBC vers le fichier (imposé par mon maître de stage). Ors, à chaque fois que je l'utilise, il considère automatiquement que la 1ère ligne constitue les titres des colonnes...
Y a-t-il un moyen de changer ça? Au cas où la page xls ne continnent pas de titre....

2/ Si le fichier a des titres de colonnes, j'aimerais bien pouvoir les récupérer (pour les mettre dans une combobox pour un futur mapping de donnée). Et je ne sais pas comment faire ça.

Est-ce que quelqu'un pourrait m'aider?

Pour le moment, j'ai ceci comme String de connexion :


source = "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=" + dbPath + ((Parameters.XlsColumnName)?";HDR=Yes" : ";HDR=No");

(dbPath est le chemin vers mon fichier xls et Parameters.XlsColumnName est un Boolean à true si il y a des noms de colonnes.)

4 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,

Beurk, de la concaténation ;-)

Sauf erreur, cette option est liée à OleDb.
Et même dans ce cas, il ne s'agit pas directement d'un élément de la chaine, mais d'un élément d'une chaine dans la chaine.

A tout hasard essaie ça :
source = string.Format("Driver={{Microsoft Excel Driver (*.xls)}};DriverId=790;Dbq={0};Extended Properties="{1};";", dbPath, Parameters.XlsColumnName?"HDR=Yes" : "HDR=No");
Mais je n'y crois pas trop, à mon avis le driver ODBC va te retourner une erreur.

/*
coq
MVP Visual C#
*/
Messages postés
8
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
16 janvier 2007

Bien vu. J'ai une erreur

"Format of the initialization string does not conform to specification starting at index 138."
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Te voilà condamner à sauter la ligne "à la main" :-)

/*
coq
MVP Visual C#
*/
Messages postés
8
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
16 janvier 2007

C'est bon, j'ai trouvé un autre moyen...
C'est pas très propre, mais ça fonctionne. Si y en a que ça intéresse



<HR>
List<
String> titles =
new
List<
String>();



String select
=
"SELECT * FROM [Sheet1$] ";



OdbcCommand comm =
new
OdbcCommand(select, conn);



OdbcDataReader dr = comm.ExecuteReader();



DataTable table = dr.GetSchemaTable();



DataRow[] rows =
new
DataRow[100];


table.Rows.CopyTo(rows, 0);



for (
int j = 0; j < rows.Length && rows[j] !=
null; j++)


{



Object[] obj = rows[j].ItemArray;


titles.Add(obj[0].ToString());


}



return titles;

<HR>