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

Signaler
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013
-
Tupad
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
-
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

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
Tu as testé si "c.ds.Tables["compte_banque"]" n'est pas null?
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013

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
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
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é
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013

je vois pas ce que tu veu dire mais merci quand meme
je vais continuer a chercher
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
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
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013

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
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
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?
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013

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é
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
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
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013

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
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
Ton dataset ne contient pas la table "compte_banque". Elle a été créée ou chargée? Tu as le bout de code concerné?
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013

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
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
Alors tu dois créer manuellement la structure de ta dataTable avant de pouvoir la remplir.
Messages postés
17
Date d'inscription
mercredi 9 février 2011
Statut
Membre
Dernière intervention
22 novembre 2013

premièrement merci pour tout Tupad , mais comment je peu structurer ma datatable ?
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
en fonction des données de ton fichier excel