SOS excel vers datagridview

Signaler
Messages postés
22
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
5 août 2011
-
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
-
Salut !
SVP j'exporte des données de excel vers datagridview le tous marche bien sauf que les champs TéléphoneClient dont la chaîne des caractères contient des (.)ou des (/) ou des (-) pour séparer les numéros ne s'exporte pas ! le temps que les chaînes qui ne contiennent pas les caractères cités sont exportés et affichées normalement .

Merci d'avance

9 réponses

Messages postés
14760
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
151
Bonjour,

Comment ça "ne s'exporte pas" ?
Conséquences, mauvaise importation ou champ vide ?
Avec quel code ? (coloration syntaxique avec la 3ième icone en partant de la droite )

Mon site
Messages postés
22
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
5 août 2011

tt d'abord merci pour ta réponse ...
bah oui les champs sont vide quand la chaine des caractère du TelephonneClient coentient l'un des caractère cités au-dessus !
et concernant le code c'est un simple

OleDbConnection cnx = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=MaSource;Extended Properties=Excel 8.0;");
OleDbDataAdapter da = new OleDbDataAdapter("select * from ["sheet1"$]", cnx);
da.Fill(ds, "test");
datagrid.datasource = ds.tables["test"];
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
Bonsoir,
NHenry t'as demandé d'utiliser la coloration syntaxique, ce qui donne ça:
OleDbConnection cnx = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=MaSource;Extended Properties=Excel 8.0;"); 
OleDbDataAdapter da = new OleDbDataAdapter("select * from ["sheet1"$]", cnx); 
da.Fill(ds, "test"); 
datagrid.datasource = ds.tables["test"]; 

C'est un peu plus lisible.

Les caractères séparateurs dont tu parles sont tous utilisés par excel dans les formules mathématiques.
Peut être qu'à l'appel de ton OleDbDataAdapter cela pose un problème (il ne sait pas si c'est du texte ou une formule, ou autre).
Tu peux essayer de changer une cellule pour confirmer ou infirmer mon hypothèse:
si '11.22-33/44.55 est importé comme un numéro de téléphone alors c'est bien ça.
Dans ce cas il te faut soit:
- 1 forcer le format texte de tous tes numéros d'une façon ou d'une autre (mettre ' avant en est une)
- 2 remplacer tes caractères problématiques par des espaces. (ctrl+H dans le tableau, par ton prog voir plus bas)
- 3 lire ton tableau ligne par ligne par un autre procédé.

J'ai fait une source sur excel qui te permettrais la solution 2, en lisant chaque cellule de ta colonne numéros et en la réécrivant au bon format . Tu pourrais ensuite lire ton tableau avec ton code.
Certes ce n'est pas terrible mais je pourrais implémenter la fonction "remplacer", si tu le souhaite j'y regarde.


Whismeril
Messages postés
14760
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
151
Bonjour,

Il y a que moi que le "sheet1", entre quote dans une chaine délimitée par des quotes ne soit pas échapés, choque ?
OleDbDataAdapter da = new OleDbDataAdapter("select * from ["sheet1"$]", cnx);


Après, je suis surtout VB peut être que ça passe en C#, dans ce cas, j'aurais appris quelque chose.

Mon site
Messages postés
22
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
5 août 2011

Salut Whismeril je vous remercie du fond du coeur pour le temps que vous m'avez accordé , je vais essayer tout ce que vous venez de me proposer et je vais vous dire le résultat (que je souhaite être le bon )
Merci infiniment
Messages postés
22
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
5 août 2011

Merci Mr. NHenry les doubles quote ne sont qu'une erreur de frappe , mon code (concernant la requête SQl marche sans probleme )
Merci
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
Bonjour,

je viens de mettre à jour ma source avec (entre autre) la fonction "remplacer".
Dans le projet de test, j'ai mis un bouton "Remplacer . - / dans le colonne J", tu verras que la colonne K est bien préservée.


Whismeril
Messages postés
22
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
5 août 2011

SVP pouvez-vous juste me montrer dans un exemple comment parcourir et récupérer toutes les cellules d'une colonne "MaColonne" du ficher Excel ! et est-ce qu'on peut modifier le contenu de la cellule en faisant un _MaFeuille.Cells[indice_row,indice_column]= "chaine";
j'essaie un
for (int var = 0; var < oSheet.Rows.Count; var++)
                {
                    string cellule = MaFeuille.Cells[var, 1].ToString();
                    MessageBox.Show(cellule);
                    MaFeuille.Cells[var, 1] = "chaine";
                }

pourtant cela me donne l'exception : la référence d"objet n'est pas définie à une instance
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
Bonsoir,

un conseil d'ordre général "var" est un type et nommer une variable avec le nom d'un type peut ensuite amener des confusions à la lecture et éventuellement des bugs.

A quelle ligne cela bug-t-il?

Si tu veux juste remplacer tes "." par des espaces de la colonne 1, comme je l'ai écrit précédemment je viens de mettre à jour ma source avec cette fonction.

Whismeril