Lire depuis un fichier excel et stocké les donnée dans une dataset

Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
- - Dernière réponse : Tupad
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
- 8 mai 2012 à 20:25
bonsoir
j'ai un probleme dans mon application win form sur CSharp j'essaie de lire depuis un fichier excel et stocké les donnée dans une dataset mais l'application me donne cette erreur au niveau de ma datarow "La référence d'objet n'est pas définie à une instance d'un objet."
voila un peu de mon code :
Microsoft.Office.Interop.Excel.Application appli;
Microsoft.Office.Interop.Excel._Workbook classeur;
Microsoft.Office.Interop.Excel._Worksheet feuille;
object M = System.Reflection.Missing.Value;
object FileName = ""+textBox11.Text+"";
//try
//{
appli = new Microsoft.Office.Interop.Excel.Application();
//appli.Visible = true;

//---------- création du classeur ---------
classeur = (Microsoft.Office.Interop.Excel._Workbook)(appli.Workbooks.Open(""+textBox11.Text+"", M, M, M, M, M, M, M, M, M, M, M, M, M, M));
//------ activer la feuille ----------
feuille = (Microsoft.Office.Interop.Excel._Worksheet)classeur.ActiveSheet;

DataRow dr = c.ds.Tables["compte_banque"].NewRow(); -----l’exception est levée ici ---------
for (int i = 1; i < feuille.Rows.Count; i++)
{
dr[0] = feuille.Cells[i, 1];
dr[1] = feuille.Cells[i, 2];
dr[2] = feuille.Cells[i, 3];
dr[3] = feuille.Cells[i, 4];
dr[4] = feuille.Cells[i, 5];
dr[5] = feuille.Cells[i, 6];
c.ds.Tables["compte_banque"].Rows.Add(dr);

}
aidé moi vite
et merci
Afficher la suite 

15 réponses

Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
0
Merci
Tu as testé si "c.ds.Tables["compte_banque"]" n'est pas null?
Commenter la réponse de Tupad
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
0
Merci
non mais pourquoi je vais testé si elle est null ou pas si moi je cherche a la remplir par les données que je prend de mon fichier excel, sinon comment je peut savoir si la dataset est null ou pas
Commenter la réponse de mounir09
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
0
Merci
En mettant un point d'arrêt à la ligne qui plante, en exécutant l'application en debug et en regardant la valeur de la table quand le point d'arrêt est levé
Commenter la réponse de Tupad
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
0
Merci
je vois pas ce que tu veu dire mais merci quand meme
je vais continuer a chercher
Commenter la réponse de mounir09
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
0
Merci
Si tu utilises visual studio:
- un point d'arrêt peut être ajouté en cliquant dans la colonne grise tout à gauche de l'écran en face de la ligne où tu veux le mettre. Ca sert à interrompre l'exécution d'un programme en cours et vérifier l'état des variables quand ce programme est lancé en mode "debug"
- Pour lancer un programme en mode "debug", appuyer sur F5.
- Pour regarder la valeur d'une variable une fois que l'exécution d'un programme a été interrompu, séléctionné le bout de code désiré, faire click droit et "add watch" ou "quick watch"

Au pire si tu ne t'en sors pas, regarde pour afficher la valeur dans une messagebox, ou un fichier de logs
Commenter la réponse de Tupad
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
0
Merci
j fait et sa me donne cette erreur "La référence d'objet n'est pas définie à une instance d'un objet."
j modifier mon code et c'est cette derniere qui ce provoque
voila le bout du code au quelle j fait les modifications
datarow dr;
DataTable t = new DataTable();
for (int i = 1; i < 557; i++)
{
dr[0] = (feuille.Cells[i, 1].ToString());"La référence d'objet n'est pas définie à une instance d'un objet."
dr[1] = feuille.Cells[i, 2];
dr[2] = feuille.Cells[i, 3];
dr[3] = feuille.Cells[i, 4];
dr[4] = feuille.Cells[i, 5];
dr[5] = feuille.Cells[i, 6];
t.Rows.Add(dr);

}
c.ds.Tables["compte_banque"].Rows.Add(t);
j trop chercher sur web j posté la question dans plusieurs forum mais sa donne rien et je suis bloqué dans cette étape , et le pire c que ce projet est un projet de fin d'études il faut que je le valide sinon ...
merci de m’aidai encore
Commenter la réponse de mounir09
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
0
Merci
dans ton dernier exemple, dr = null -> normal que tu aies une exception.

dans le reste de ton code, le "c" et "ds" viennent d'où? Tu les initialises comment? Tu as la structure de ta base de données?
Commenter la réponse de Tupad
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
0
Merci
le "c" est une classe où je pose ma connexion est le "ds" c une dataset. et je comprend pas pourquoi La référence d'objet n'est pas définie à une instance d'un objet d'où vien cette erreur !! c ce qui me fait flippé
Commenter la réponse de mounir09
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
0
Merci
essaie de remplacer

feuille = (Microsoft.Office.Interop.Excel._Worksheet)classeur.ActiveSheet; 

DataRow dr = c.ds.Tables["compte_banque"].NewRow(); -----l&#8217;exception est levée ici --------- 


par

feuille = (Microsoft.Office.Interop.Excel._Worksheet)classeur.ActiveSheet; 

if(c == null)
throw new Execption ("c null");
if(c.ds == null)
throw new Execption ("c.ds null");
if(c.ds.Tables["compte_banque"]== null)
throw new Execption ("c.ds.Tables["compte_banque"] null");

DataRow dr = c.ds.Tables["compte_banque"].NewRow(); -----l&#8217;exception est levée ici --------- 


Et dis nous l'erreur qui t'es renvoyée
Commenter la réponse de Tupad
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
0
Merci
sa maffiche le message "c.ds.Tables["compte_banque"] null" et sa me léves l'exception qui ce léve à chaqque fois La référence d'objet n'est pas définie à une instance d'un objet
Commenter la réponse de mounir09
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
0
Merci
Ton dataset ne contient pas la table "compte_banque". Elle a été créée ou chargée? Tu as le bout de code concerné?
Commenter la réponse de Tupad
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
0
Merci
parce que je suis en étape de remplissage de ma dataset c pour celà que je veux lire les information de mon fichier excel et puis stocké ces informations via la dataset dans ma base de donnée SQL server 2005
Commenter la réponse de mounir09
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
0
Merci
Alors tu dois créer manuellement la structure de ta dataTable avant de pouvoir la remplir.
Commenter la réponse de Tupad
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
0
Merci
premièrement merci pour tout Tupad , mais comment je peu structurer ma datatable ?
Commenter la réponse de mounir09
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
0
Merci
en fonction des données de ton fichier excel
Commenter la réponse de Tupad