EXPORTER UN DATAGRIDVIEW VERS EXCEL

Signaler
Messages postés
4
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2006
-
Messages postés
29
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
17 janvier 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39038-exporter-un-datagridview-vers-excel

Messages postés
29
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
17 janvier 2012
2
@ingenieurA
string command = "mailto:info@codegain.com?subject=The CodeGain-Editor";
Process.Start(command);

la longueur de l'argument "command" ne doit pas dépasser 2080 caractère.
Messages postés
4
Date d'inscription
vendredi 19 décembre 2008
Statut
Membre
Dernière intervention
26 juin 2012

salut tout le monde s'il vous plait je un petit prog ou fonction qui me permet d'appeler outlook dans c# pour envoyer des mails??????????
Messages postés
117
Date d'inscription
dimanche 2 janvier 2011
Statut
Membre
Dernière intervention
25 mars 2011

je travaille dans visuel studio 2008 , mais il me souligne sur office sur tout les lignes , j'ai ajoute la ligne using ExcelApplication = Microsoft.Office.Interop.Excel.Application; mas il y a toujours l'erreur , quelqu'un peut m'aider ??
Messages postés
1
Date d'inscription
mercredi 2 mai 2007
Statut
Membre
Dernière intervention
13 mars 2009

Merci pour ce code et les commentaires.
Je veux juste rajouter que si on a plus de 26 colonnes dans la table, il y a l'erreur Message="Exception from HRESULT: 0x800A03EC".
Il faut revoir la commande "Convert.ToChar(65 + i).ToString()"
J'ai créé une fonction pour remplacer cette ligne de commande ( exemple: NomCellule(0)=A, NomCellule(26)=AA)

private string NomCellule(int i)
{
int resultat=0;
string retour_Char="";
while (i >= 0)
{
if (resultat != 0)
{
retour_Char =Convert.ToChar(65 + resultat-1).ToString();
i--;
}
if (i <= 25)
{
retour_Char = retour_Chaine + Convert.ToChar(65 + i).ToString();
break;
}
else //i>25
{
i = i - 25;
resultat++;
}
}
return retour_Char;
}
Messages postés
8
Date d'inscription
mercredi 12 avril 2006
Statut
Membre
Dernière intervention
25 mars 2009

Merci beaucoup pour ce code qui m'a beaucoup aidé, et merci également pour la discussion en dessous sur les références à ajouter !

Bonne journée
Messages postés
39
Date d'inscription
vendredi 5 octobre 2007
Statut
Membre
Dernière intervention
27 mars 2009
1
euh !!! quelqu'un sait-il comment on fait pour que le code fonctionne même si il y a d cellules vides ???
Merci...
:-)
Messages postés
39
Date d'inscription
vendredi 5 octobre 2007
Statut
Membre
Dernière intervention
27 mars 2009
1
euh pardon, cela fonctionne très bien merci.

Mon problème était d'avoir une cellule vide dans mon dgv !!! maintenant c super bon.
Encore une fois MERCI...
Messages postés
39
Date d'inscription
vendredi 5 octobre 2007
Statut
Membre
Dernière intervention
27 mars 2009
1
Bonjour,
merci pour le code je l'ai essayé et il m'a bien crée un fichier excel à partir de ma dgv. Génial mais...

Le prog bug avant de finir et g l'erreur :

System.Runtime.InteropServices.COMException was unhandled
Message="Exception from HRESULT: 0x800A03EC"
Source=""
ErrorCode=-2146827284
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:

POURQUOI SVP ???

EN TOUT CAS MERCI POUR LE CODE
Messages postés
29
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
17 janvier 2012
2
en vb tu utiliser :
Dim excel As New Excel.ApplicationClass()
Messages postés
2
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
20 août 2007

use DataGridView Extension - it is free and gives you the ability to export to Excel, Html, soon Pdf (they say). Also you can search for text, save some settings as a theme, make all controls look and behave the same very easy.

http://www.completit.com/Products/DGVE/Overview.aspx

Hope it will be helpfull.
Messages postés
62
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
30 juin 2007
2
j'ai toujours des problemes, pouvez vous m'envoyer le projet compile directement (rudh9@yahoo.com)
merci
Messages postés
62
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
30 juin 2007
2
dans les references COM moi je n'ai pas "Microsoft.office.interop.excel" je vais reinstaller mon Office puis on verra
Messages postés
12
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
28 octobre 2006

Un de mes amis a déjà eu ce problème avec "INTEROP" auparavant. Mais après une réinstallation de Office 2003 avec l'option "complète", le problème était résolu. Apparemment, certaines options d'instalaltion doivent être cochées pour que ces objets COM soient disponibles.
elhazard : j'accepte toutes les critiques et je te remercie aussi pour celles que tu as postées et ça m'a aussi permis de mieux sécuriser mon code. ;-)
Messages postés
4
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2006

Personnelement j'ai compilé le projet avec visual 2005 donc tu devrais pas avoir de problemes :
tu dois rajouter la référénce : cherche Microsoft.office.interop.excel dans les objets COM;
sinon, le using ExcelApplication = Microsoft.Office.Interop.Excel.Application n'est pas tres joli :]
Rahou, ne voit pas de reproches dans mon post précédent, ton code source m'a bien aidé à comprendre les interop
et je t'en remercie =)
++
Messages postés
62
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
30 juin 2007
2
oui bien sur, j'ai ajoute l'objet COM "Microsoft Excel Objet library 11"
ensuite j'ai ajoute la ligne using ExcelApplication = Microsoft.Office.Interop.Excel.Application;
mais il m'affiche l'erreur :
Le type ou le nom d'espace de noms 'Interop' n'existe pas dans la classe ou l'espace de noms 'Microsoft.Office' (une référence d'assembly est-elle manquante ?)
alors comment faire ???
Messages postés
12
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
28 octobre 2006

J'ai utilisé la version 2005 de visual studio.
Pour l'espace de noms "INTEROP", il faut importer l'objet COM "Microsoft Excel Objet library 11 (pour excel 2003)".
Pour répondre au post précédent : ce code est juste un exemple qui permet aux autres qui ont des soucis pour faire un code pareil de s'inspirer de celui-ci. Toute remarque ou amélioration utile est la bienvenue.
Messages postés
62
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
30 juin 2007
2
bonjour,
tu as cree cette application avec quelle version de VS, est ce la version 2003 ou 2005 parce que je trouve quelques problemes pour utiliser l'application.
j'ai ajoute l'objet COM Microsoft.Office mais il m'affiche l'erreur suivante:

Le type ou le nom d'espace de noms 'Interop' n'existe pas dans la classe ou l'espace de noms 'Microsoft.Office' (une référence d'assembly est-elle manquante ?) C:\Documents and Settings\User\Mes documents\Visual Studio 2005\Projects\ExporterVersExcel\ExporterVersExcel\Form1.cs
Messages postés
4
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2006

j'ai été un peu rapide (sur le 3eme point) il faut bien sur vérifier si l'objet contenu dans la case du datagridview existe et donc (cells[i].value != null)
désolé :]
Messages postés
4
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2006

Salut, il y a pas mal d'erreurs dans le code :

1) il ne faut pas oublier d'ajouter les references
using Microsoft.Office.Interop.Excel et de faire (pour utiliser le code comme ca)
using ExcelApplication = Microsoft.Office.Interop.Excel.Application;

2)tu veux au debut imprimer les
r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", colonnes :
ce n'est pas + "1" mais "2" dans ce cas et je te conseille plutot d'utiliser les index de la datagridview (colonne et ligne)que des indices de boucles


3)dans la boucle foreach verifie que la valeur n'est pas nulle dans la datagridview avant d'y acceder
if (exsheet.Cells[j, i] != null) et n'oublie pas qu'il n'y a pas que des String dans une datagridview donc il vaut verifier le type avant (typeof)

4) il faut sécuriser plus ton code :
si l'application echoue a la fin il faut mettre le
excel.Quit() dans un finalize:

catch (Exception ex)
{
throw (ex);
}
finalize
{
excel.Quit();
}

voila bon courage