Erreur lecture Excel .xls

Signaler
Messages postés
151
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
8 octobre 2013
-
Messages postés
2
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
24 octobre 2005
-
J'ai un autre petit probleme,

Je vais récupérer par une connexion oledb le contenu d'un tableau Excel mais pendant la récupération,
par exemple, pour la colonne 0 ( la premiere ) qui est la référence article, il me retourne DBNull pour certaines lignes alors qu'elles contiennent des valeurs

comme par hasard, ces cellules ne contiennent que des chiffres contrairement aux autres qui sont alphanumériques

Donc ce que je comprends pas, c'est pourquoi il me retourne bien les cellules alphanumériques mais pas celles contenant que des nombres

Voici mon code :

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=LISTE.xls;Extended Properties='Excel 8.0;HDR=YES;'";

string selectString = "SELECT * FROM DA";
OleDbConnection objConn = new OleDbConnection(connectionString);
objConn.Open();
OleDbCommand objCmdSelect =new OleDbCommand(selectString, objConn);
OleDbDataReader myReader = objCmdSelect.ExecuteReader();

while (myReader.Read())
{
DataRow MaLigne = maTable.NewRow();
if(myReader.IsDBNull(2) == true)
{
MaLigne["Code Article"] = "erreur";
}
else
{
MaLigne["Code Article"] = myReader[2].ToString();
}
MaLigne["Qté"] = Convert.ToInt32(myReader[0]);
MaLigne["Délai"] = myReader[1].ToString();
MaLigne["Livraison"] = "Test";
MaLigne["Code Affaire"] = "Test";
MaLigne["N° Plan"] = "Test";

maTable.Rows.Add(MaLigne);
dss.AcceptChanges();
}

dataGrid1.DataSource = dss.Tables[0];

d'avance merci car je comprends pas d'où vient mon erreur

La propriété de la colonne CodeArticle de mon datatable est system.string mais je ne vois pas pourquoi ca serait ca le pb

Autre erreur, il ne commence à me récupérer les résultats qu'a partir de la 2e ligne
donc je vois pas non plus pourquoi il me zap la premiere ligne

Au besoin, je peux envoyer une archive du prog en cas de besoin

Amicalement
Julien

13 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
euh
deja pense a utiliser les balises CODE, C plus sympa pour lire

sinon quand G fait un chtiot prog de lecture de fichier xls le seul probleme que j'avais rencontré C au niveau des cellules "jointes" (me souviens plus du terme exact pour 2 cellules réunies en une seule)

V voir si je retrouve mon code

Cocoricoooooooo !!!!
Messages postés
151
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
8 octobre 2013

Oui si tu pouvais me le retrouver, ca m'aiderais, sinon, ca serait possible que je t'envoi mon prog pour que tu me dise si y'a une erreur de prog dedans ?

Je l'ai crée uniquement pour ce pb donc il ne contient que cette fonction et n'est donc pas tres gros

Amicalement
Julien
Messages postés
151
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
8 octobre 2013

Par contre, je viens de tester quelque chose

Si mon groupe de lignes où la valeur du code article n'est que numérique est en début de fichier, cette fois, il m'affiche bien toutes les lignes en numérique mais cette fois, il m'envoi DBNull pour ceux en Alpha numérique

donc le pb d'apres ce que j'en déduit, c'est qu'il n'accepte pas plusieurs types de valeurs dans une meme colonne :(
Messages postés
151
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
8 octobre 2013

Encore autre chose qui confirme ma théorie précédente, si j'ajoute une apostrophe devant la valeur numérique pour en faire une chaine de caractères dans Excel, là il me l'affiche bien
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
G retrouver mon code mais bon il serait d'aucune utilitée sans le xls qu'il gere (et que justement je ne peut pas diffuser)

sinon ton HDR = Yes je sais po a quoi il sert
moi ma chaine de connexion C juste ça :

OleDbConnection excelConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+textBoxFichier.Text+";Extended Properties=Excel 8.0;");
OleDbCommand excelCommand = new OleDbCommand("SELECT * FROM ["+(string)config.listeFeuilles[index_feuilles]+"$]", excelConnection);


Cocoricoooooooo !!!!
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
euh ben vi envoi ton code je jetterais un oeil

Cocoricoooooooo !!!!
Messages postés
151
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
8 octobre 2013

Nan, toujosur le meme pb avec ton code :(
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
ok

ben envoi ptet que j'aurais une idée
met l'archive sur un compte web ou alors envoi par dcc sur le chat

sinon pour ma culture personnelle C koi ce HDR ?

Cocoricoooooooo !!!!
Messages postés
151
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
8 octobre 2013

Je ne sais pas vraiment ce que c'est, j'ai trouvé ca dans une des nombreuses sources que j'ai testé sur le net :(

Pour l'archive, peux tu m'envoyer ton email en PM car etant a ma société, je ne peux pas me connecter sur IRC ni accéder au FTP de mon site perso

d'avance merci

Amicalement
Julien
Messages postés
24
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
22 février 2006

le HDR c'est un truc lié avec les entêtes de colonne, un truc dasn ce genre si t'as eu plus de précisions a ce sujet je suis interessé!!!
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Moui, depuis le temps j'ai appris qu'il permet en fait de considérer la 1ere ligne comme contenant des noms de colonnes et non des données. (et donc de ne pas les avoir dans la liste des lignes, mais en nom de colonne du DataTable)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
2
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
24 octobre 2005

Bonjour,

J'ai le meme problème. Lorsque je charge le fichier Excel dans une DataGrid, certaines valeurs sont nulles alors qu'elles sont renseignées dans le fichier Excel. Il s'agit surtout de format Date.

Voici mon code:

string strConnectionString =
string.Empty;


strConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source ="+sFilePath+@"; Extended Properties=Excel 10.0";


OleDbConnection cnCSV =
new OleDbConnection(strConnectionString);


cnCSV.Open();


OleDbCommand cmdSelect =
new OleDbCommand (@"SELECT * FROM [Sheet1$]", cnCSV);


OleDbDataAdapter daCSV =
new OleDbDataAdapter();


daCSV.SelectCommand = cmdSelect;


DataTable dtCSV =
new DataTable ();


daCSV.Fill(dtCSV);


cnCSV.Close();


daCSV =
null;


dgTest.DataSource = dtCSV;


dgTest.DataBind();


Pouvez-vous me dire ce qu'il faut que je fasse pour que toutes les cellules soient remplies comme dans mon fichier Excel?????






MERCI
Messages postés
2
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
24 octobre 2005

Bonjour,

J'ai le meme problème. Lorsque je charge le fichier Excel dans une DataGrid, certaines valeurs sont nulles alors qu'elles sont renseignées dans le fichier Excel. Il s'agit surtout de format Date.

Voici mon code:

string strConnectionString =
string.Empty;


strConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source ="+sFilePath+@"; Extended Properties=Excel 10.0";


OleDbConnection cnCSV =
new OleDbConnection(strConnectionString);


cnCSV.Open();


OleDbCommand cmdSelect =
new OleDbCommand (@"SELECT * FROM [Sheet1$]", cnCSV);


OleDbDataAdapter daCSV =
new OleDbDataAdapter();


daCSV.SelectCommand = cmdSelect;


DataTable dtCSV =
new DataTable ();


daCSV.Fill(dtCSV);


cnCSV.Close();


daCSV =
null;


dgTest.DataSource = dtCSV;


dgTest.DataBind();


Pouvez-vous me dire ce qu'il faut que je fasse pour que toutes les cellules soient remplies comme dans mon fichier Excel?????






MERCI