Erreur lecture Excel .xls

jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013 - 9 févr. 2004 à 09:16
atslyon Messages postés 2 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 24 octobre 2005 - 24 oct. 2005 à 15:53
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
9 févr. 2004 à 09:36
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 !!!!
0
jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013
9 févr. 2004 à 09:41
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
0
jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013
9 févr. 2004 à 09:49
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 :(
0
jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013
9 févr. 2004 à 09:52
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
9 févr. 2004 à 09:52
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 !!!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
9 févr. 2004 à 09:53
euh ben vi envoi ton code je jetterais un oeil

Cocoricoooooooo !!!!
0
jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013
9 févr. 2004 à 09:57
Nan, toujosur le meme pb avec ton code :(
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
9 févr. 2004 à 10:00
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 !!!!
0
jdaviaud Messages postés 151 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 8 octobre 2013
9 févr. 2004 à 10:02
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
0
Anormal13 Messages postés 24 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 22 février 2006
7 juil. 2005 à 10:23
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é!!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
7 juil. 2005 à 23:27
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#
0
atslyon Messages postés 2 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 24 octobre 2005
24 oct. 2005 à 15:28
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
0
atslyon Messages postés 2 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 24 octobre 2005
24 oct. 2005 à 15:53
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
0
Rejoignez-nous