IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Exportation d'un DataSet Vers Excel


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut Exportation d'un DataSet Vers Excel
    Bonjour,

    Je souhaiterais exporter des données d'un DataSet dans un fichier Excel déjà existant.
    Les données du DataSet doivent être placées à divers endroits sur le fichier Excel.
    Cela fait un bon petit bout de temps que je cherche et je n'ai rien trouvé qui me convienne ou qui soit fonctionnel.

    Merci d'avance pour vos réponses

    Icemc68

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    J'ai utilisé NPOI (http://npoi.codeplex.com/) pour un projet, et c'etait pas mal. Mais ca ne fonctionne pas avec des .xlsx d'après ce que je me rappelle.

  3. #3
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    pour les formats xlsx donc version excel > office 2003 tu peux utiliser un composant tiers gratuit : Epplus c'est en quelque sorte le NPOI pour les fichiers xlsx

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    Bonsoir,

    J'ai un peu de mal à comprendre son fonctionnement.
    Quelqu'un pourrez m'expliquer le principe et surtout comment le mettre en place?

    Cordialement

    Icemc68

  5. #5
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Pour mettre en place c'est simple tu références le npoi.dll et/ou epplus.dll dans ta solution/projet

    tu as des exemples d'utilisation sur les sites ensuite pour lire les lignes/colonnes/... excel

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    Et comment je fais pour référencer npoi.dll?
    J'ai vu les exemples notamment un qui s'appelle SetCellValuesInXls mais je comprend pas trop le fonctionnement.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    J'ai réussi à ajouter des données dans une cellule, mais ca m'efface toutes les données et la mise en page de la feuille.

    Auriez vous une idée pour que je puisse garder la mise en page du fichier?

  8. #8
    Membre éclairé Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Bonjour,

    Je me permet de répondre avec une solution un peu plus simple (du coup moins évolutive), mais si cela peut vous dépanner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
            public void AddDataSet(DataSet dtS)
            {
                if (dtS.Tables.Count > 0)
                {
                    DataTable dtT = dtS.Tables[0];
     
                    nbCols = dtT.Columns.Count;
                    nbRows = dtT.Rows.Count;
     
                    for (int i = 0; i < dtT.Columns.Count; i++)
                    {
                        xlSheet.Cells[1, i + 1] = dtT.Columns[i].ColumnName;
                    }
                    for (int i = 0; i < dtT.Rows.Count; i++)
                    {
                        for (int j = 0; j < dtT.Columns.Count; j++)
                        {
                            xlSheet.Cells[i + 2, j+1] = dtT.Rows[i][j];
                        }
                    }
     
                }
            }
    A noter que j'utilise la méthode dans un objet utilisant Microsoft.Office.Interop.Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    using Exl = Microsoft.Office.Interop.Excel;
    public class ExcelPilot_
        {
            #region attributs
                /// <summary>
                /// Nom du fichier à sauvegarder
                /// </summary>
                private String fileName;
                /// <summary>
                /// Nom de la feuille à sauvegarder (NOT USED)
                /// </summary>
                private String sheetName = "Sheet1";
                /// <summary>
                /// Nom du pivot à donner
                /// </summary>
                private String pivotName = "Pivot1";
     
                private Exl.Application xlApp;
                private Exl.Workbook xlBook;
                private Exl.Worksheet xlSheet;
                private Exl.PivotTable xlPivot;
     
                /// <summary>
                /// Liste des données à mettre en ligne sur le pivot
                /// </summary>
                private String[] RowField;
                /// <summary>
                /// Liste des données à mettre en colonne sur le pivot
                /// </summary>
                private String[] ColField;
                /// <summary>
                /// Liste des données à calculer sur le pivot
                /// </summary>
                private String[] DataField;
     
                private bool showColTotal = true;
                private bool showRTotal = true;
     
                private int nbRows = 0;
                private int nbCols = 0;
     
                private Exl.XlConsolidationFunction consolidationFunction = Microsoft.Office.Interop.Excel.XlConsolidationFunction.xlSum;
                private Microsoft.Office.Interop.Excel.XlChartType _chartType = Microsoft.Office.Interop.Excel.XlChartType.xl3DPie;
                private Microsoft.Office.Interop.Excel.XlLegendPosition _chartLegendPosition = Microsoft.Office.Interop.Excel.XlLegendPosition.xlLegendPositionBottom;
                private Exl.XlDataLabelsType labelsType = Microsoft.Office.Interop.Excel.XlDataLabelsType.xlDataLabelsShowValue;
     
                private bool dataLabels = true;
     
            #endregion
     
            #region fonctions
     
            #region constructeurs
     
            private void createApp()
            {
                xlApp = new Exl.ApplicationClass();
                xlBook = xlApp.Workbooks.Add(Exl.XlWBATemplate.xlWBATWorksheet);
                xlSheet = (Exl.Worksheet)xlBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                xlApp.DisplayAlerts = false;
                xlApp.Visible = false;
            }
    }

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    Merci pour votre réponse, mais je ne vois pas où je met le lien de mon fichier xls dans vos fonctions

  10. #10
    Membre éclairé Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Dans la fonction createApp(), au lieu de faire un Workbook.add(), faites un workbook.open().

    Pour plus d'informations sur sa syntaxe : http://msdn.microsoft.com/en-us/libr...ffice.11).aspx

    Depuis mon appli je crée toujours un nouveau fichier, ici vous devrez définir un nom de fichier dans l'instance que vous initialiserez, par exemple à l'aide de fileName.
    Je ne vous ai pas donné une solution toute faite mais plus une direction à suivre.

Discussions similaires

  1. Exporter un datagrid ou dataset vers excel
    Par patsolaar dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/07/2008, 21h55
  2. [VB.net] Exporter un DataSet vers Excel
    Par Speranza dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/12/2006, 09h18
  3. Comment exporter un lien hypertexte vers excel
    Par Celia1303 dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 09h33
  4. Exporter un état QuickReport vers Excel.
    Par abdelghani_k dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/06/2004, 14h22
  5. [] [Excel] Exporter un graphe MSChart vers Excel
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo