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

mounir09 Messages postés 15 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 22 novembre 2013 - 7 mai 2012 à 23:06
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

15 réponses

Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
8 mai 2012 à 12:45
Tu as testé si "c.ds.Tables["compte_banque"]" n'est pas null?
0
mounir09 Messages postés 15 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 22 novembre 2013
8 mai 2012 à 12:55
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
0
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
8 mai 2012 à 15:19
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é
0
mounir09 Messages postés 15 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 22 novembre 2013
8 mai 2012 à 15:23
je vois pas ce que tu veu dire mais merci quand meme
je vais continuer a chercher
0

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

Posez votre question
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
8 mai 2012 à 15:40
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
0
mounir09 Messages postés 15 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 22 novembre 2013
8 mai 2012 à 15:56
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
0
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
8 mai 2012 à 16:07
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?
0
mounir09 Messages postés 15 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 22 novembre 2013
8 mai 2012 à 16:14
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é
0
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
8 mai 2012 à 16:23
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
0
mounir09 Messages postés 15 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 22 novembre 2013
8 mai 2012 à 16:33
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
0
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
8 mai 2012 à 16:38
Ton dataset ne contient pas la table "compte_banque". Elle a été créée ou chargée? Tu as le bout de code concerné?
0
mounir09 Messages postés 15 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 22 novembre 2013
8 mai 2012 à 16:42
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
0
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
8 mai 2012 à 16:58
Alors tu dois créer manuellement la structure de ta dataTable avant de pouvoir la remplir.
0
mounir09 Messages postés 15 Date d'inscription mercredi 9 février 2011 Statut Membre Dernière intervention 22 novembre 2013
8 mai 2012 à 17:04
premièrement merci pour tout Tupad , mais comment je peu structurer ma datatable ?
0
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
8 mai 2012 à 20:25
en fonction des données de ton fichier excel
0
Rejoignez-nous