begin process at 2013 05 21 20:45:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

Access

 > 

Transférer les données d'un DataGridView dans un fichier Excel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Transférer les données d'un DataGridView dans un fichier Excel

lundi 25 juin 2012 à 09:12:14 | Transférer les données d'un DataGridView dans un fichier Excel

warzet

Bonjour à tous,
j'ai un gros soucis, et je sollicite votre aide en cela. J'ai un DataGridView et je souhaiterais en transférer les données dans un fichier Excel pour impression: par votre aide, j'ai fait ceci.
[using System.Reflection;
using ExcelApplication = Microsoft.Office.Interop.Excel.Application;
]
[ #region DECLARATION
private string UnFichier = "Bulletin.xls";
private string NomEntete = "Notation";
#endregion
]
[#region ExporterGridVersExcel Surchargé Type #1
///<summary>
///Permet d'exporter un DataGrid vers excel
///</summary>
/// <param name="dgView">Data Grid Source des données à Exporter vers Excel</param>
///<param name="unFichier">Fichier Excel de destination des données</param>
///<param name="strEnteteDeFichier">Libellé de l'en-tête du fichier à générer</param>
public void ExporterGridVersExcel(DataGridView dgView, String unFichier, string strEnteteDeFichier)
{
int i = 0;
int j = 0;
ExcelApplication excel = new ExcelApplication();
Microsoft.Office.Interop.Excel.Workbook exbook = (Microsoft.Office.Interop.Excel.Workbook)excel.Workbooks.Add(Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet exsheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet;

try
{
//Mise en forme de l'en-tête de la feuille Excel
exsheet.Cells[1, 1] = strEnteteDeFichier;
Microsoft.Office.Interop.Excel.Range r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", Missing.Value);
r.Interior.ColorIndex = Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic;
r.Font.Bold = true;
r.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, Missing.Value);
r.EntireColumn.AutoFit();//Fin de la mise en forme de l'en-tête.

foreach (DataGridViewColumn ch in dgView.Columns)
{
if (exsheet.Cells[j, i] != null)
{
r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", Missing.Value);
exsheet.Cells[2, i + 1] = ch.Name.Trim();
r.Interior.ColorIndex = Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic;
r.Font.Bold = true;
r.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, Missing.Value);
r.EntireColumn.AutoFit();
i++;
}
}
j = 3;

foreach (DataGridViewRow uneLigne in dgView.Rows)
{
i = 1;
foreach (DataGridViewColumn uneColonne in dgView.Columns)
{
if (exsheet.Cells[j, i] != null)
{
r = exsheet.get_Range(Convert.ToChar(65 + i - 1).ToString() + j.ToString(), Missing.Value);
exsheet.Cells[j, i] = "'" + uneLigne.Cells[uneColonne.Name].Value.ToString().Trim();
r.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, Missing.Value);
r.EntireColumn.AutoFit();
i++;
}
}
exsheet.Columns.AutoFit();
j++;
}
exsheet.SaveAs(unFichier, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
excel.Quit();
}
catch (Exception ex)
{
throw (ex);
}
finally
{
excel.Quit();
}
}

#endregion]

[ private void btnExcel_Click(object sender, EventArgs e)
{
ExporterGridVersExcel(dgvMoyenne,UnFichier,NomEntete);
}
]

Mais j'obtiens l'erreur suivante:

[Impossible d'effectuer un cast d'un objet COM de type 'Microsoft.Office.Interop.Excel.ApplicationClass' en type d'interface 'Microsoft.Office.Interop.Excel._Application'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{000208D5-0000-0000-C000-000000000046}' a échoué en raison de l'erreur suivante : n&#8217;a pas pu être trouvé. (Exception de HRESULT : 0x80030002 (STG_E_FILENOTFOUND)).][/quote]

Quelqu'un peut-il me dire d'où me provient cette erreur?
Merci beaucoup à tous.
lundi 25 juin 2012 à 12:12:55 | Re : Transférer les données d'un DataGridView dans un fichier Excel

whismeril

Bonjour

je cite NHenry

  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
  3. En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
  4. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés.



Regarde particulièrement le point 2.
Du coup, je n'ai pas regardé ton code, voici une source pour faire un peu de tout avec excel, tu y trouveras peut-être ton bonheur

Whismeril
mardi 26 juin 2012 à 14:48:42 | Re : Transférer les données d'un DataGridView dans un fichier Excel

BinKentsu

Bonjour,

Indique nous à quel niveau ton erreur s'est produite s'il te plait, là on cherche une aiguille dans une botte de foin...

PS : Il suffit de double cliquer sur l'erreur pour te ramener à la source de ton erreur, et indique là nous.

BinKentsu

mercredi 27 juin 2012 à 09:10:28 | Re : Transférer les données d'un DataGridView dans un fichier Excel

warzet

Merci pour à tous pour vos conseils éclairés, aussi je voudrais savoir, lorsque je choisis les quotes [ ] [], dois-je glisser mon code entre [] ou alors entre le groupe [] []. Merci.
En ce qui me concerne, j'ai inséré mon code entre [].
Pour l'erreur, elle se produit lorsque je click sur le bouton de transfert de données vers excel "bntExcel". Merci encore.
mercredi 27 juin 2012 à 10:51:49 | Re : Transférer les données d'un DataGridView dans un fichier Excel

whismeril

Bonjour,

dois-je glisser mon code entre [] ou alors entre le groupe [] []


voir :

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )



Il me semble que ton problème n'est pas résolu,

Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés.



Whismeril
mercredi 27 juin 2012 à 11:07:17 | Re : Transférer les données d'un DataGridView dans un fichier Excel

whismeril

Un première remarque

Code C# :
            catch (Exception ex)
            {
                throw (ex);
            }


la clause catch sert à récupérer une erreur pour la traiter.
Ton traitemet consiste à regéner cette erreur.
Ca ne sert à rien.

Whismeril
mercredi 27 juin 2012 à 11:10:59 | Re : Transférer les données d'un DataGridView dans un fichier Excel

BinKentsu


Non mais tu nous as pas répondu :s
Surligne nous la ligne qui envoie l'erreur, ne nous dit pas simplement à quel moment l'erreur arrive, mais montre nous la ligne de code qui pose problème.

BinKentsu
mercredi 27 juin 2012 à 11:31:12 | Re : Transférer les données d'un DataGridView dans un fichier Excel

whismeril

J'ai ajouté
Code C# :
            excel.Visible = true;

pour voir ce qui se passe.

A mon premier passage ici
Code C# :
foreach (DataGridViewColumn ch in dgView.Columns) 
{ 
if (exsheet.Cells[j, i] != null) 


i et j vallent 0, la cells[0,0] n'existe pas ça beug.
J'ai mis 2 et 2 pour aller voir plus loin.

Tu devrais mettre tes autofit() une seule fois à la fin, là ça le fait à chaque itération, tu perds du temps d'exécution.



Et enfin à cette ligne

Code C# :
exsheet.Cells[j, i] = "'" + uneLigne.Cells[uneColonne.Name].Value.ToString().Trim(); 


si la cellule du datagridview est vide ça plante,
à remplacer par ça par exemple
Code C# :
if (.Cells[uneColonne.Name].Value != null) exsheet.Cells[j, i] = "'" + uneLigne.Cells[uneColonne.Name].Value.ToString().Trim(); 


C'est tout ce que j'ai trouvé.
Je n'ai pas eu le même texte d'erreur que toi, je suis sous VS2008 Express

Whismeril
mercredi 27 juin 2012 à 11:35:21 | Re : Transférer les données d'un DataGridView dans un fichier Excel

whismeril

Une dernière chose,
les clauses
Code C# :
try
{

}
catch
{

}
finally
{

}

Peuvent être handicapante pour débeuguer, en effet en cas d'erreur tu arrives systématiquement dans la clause catch, sans forcément savoir d'ou ça vient.
Dans ces cas là, le temps de trouver l'erreur j'enlève les clause (je les commente).
Du coup quand ça plante l'environnement te positionne direct sur la ligne qui beug, tu peux survoller les variables et voir ce qui ne va pas.

Whismeril
mercredi 4 juillet 2012 à 08:46:10 | Re : Transférer les données d'un DataGridView dans un fichier Excel

warzet

Merci à vous tous pour vos précieux conseils, je vais m'y mettre pour rechercher mes erreurs. Merci encore

1 2 3

Cette discussion est classée dans : excel, office, microsoft, value, interop


Répondre à ce message

Sujets en rapport avec ce message

GROS problème de composants COM [ par Gaxx ] Bonjour,J'ai commencé à développer une appli C# avec VS.NET sur un PC portable équipé de Office 2003 et VS.NET 2003. Je fait de la génération de docum l'assembly Microsoft. Office. Interop. Excel version 11.0.0.0 [ par ABDOULRAMZY ] bonjour,j'ai un problème et cela m'inquiète. En fait j'ai conçu un programme qui marche bien mais quand j'exécute mon programme sur mon PC ( ou il exi Utiliser Microsoft.Office.Interop.Excel sans excel [ par doudou_rennes ] Bonjour à toutes et à tous,Je suis entrain de développer une appli Web qui récupère des données depuis SQL Server, les manipule, et doit générer des f exportation excel [ par ericdu93 ] Bonjour,Je cherche à faire fonctionner mon exécutable sur une autre machine. Voici la configuration!Ma machine A:Systeme: Windows xp proLogiciel: offi Probleme création de fichier EXCEL [ par aifzaide ] Bonjour,Dans mon site web, je genere un fichier .xls dans lequel je stock des stats. Lorsque je crée le fichier Excel ca passe directement dans le cat Documentation pour Microsoft.Office.Interop.Excel [ par Migs ] Bonjour,Je me prend la tête pour manipuler une feuille Excel car je n'ai pas réussi à trouver de documentation qui me décrive les méthodes, les propri Excel dans csharp Rechercher Remplacer .. [ par kdior ] Bonjour, Je suis débutant en Csharp, j'ai crée une application Csharp  qui génère un fichier Excel.je souhaiterai utiliser la fonction Rechercher et R Microsoft.Office.Interop.Excel [ par aatabjamila ] Bonjour à tous, Bien que j'ai rajouté la référence Microsoft.Office.Interop.Excel J'obtiens le message suivant lors de la compilation : Le type ou l Temps d'exportation des données vers un fichier excel [ par bebyson ] Bonjour à tous j'ai un problème d'exportation des données de datagridview vers un fichier Excel. j'exporte trés bien les données, mais le temps d'ex impression d'un document excel [ par warzet ] Bonjour à tous, je fais comme suis pour générer un fichier Excel [code=cs] private void Click_Exporter(object sender, EventArgs e) {


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,123 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales