[C#] Titre de colonnes xls

crawling5 Messages postés 8 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 16 janvier 2007 - 9 mars 2006 à 16:13
crawling5 Messages postés 8 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 16 janvier 2007 - 10 mars 2006 à 09:46
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.)
A voir également:

4 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
9 mars 2006 à 23:51
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#
*/
0
crawling5 Messages postés 8 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 16 janvier 2007
10 mars 2006 à 07:47
Bien vu. J'ai une erreur

"Format of the initialization string does not conform to specification starting at index 138."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 mars 2006 à 09:42
Te voilà condamner à sauter la ligne "à la main" :-)

/*
coq
MVP Visual C#
*/
0
crawling5 Messages postés 8 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 16 janvier 2007
10 mars 2006 à 09:46
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>
0
Rejoignez-nous