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

Logiciels Libres & Open Source Discussion :

Export excel impossible via logiciel


Sujet :

Logiciels Libres & Open Source

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut Export excel impossible via logiciel
    Bonjour,
    ne sachant pas où poster le message je le met ici.

    A partir d'un logiciel qui a été developé en c#, je lance une requête de base de données, dans lequel on a un bouton Export, qui permet de sauvegardé les résultats dans un fichier excel. Seulement le problème, l'une de mes requête, retourne environ 215 227 lignes ( ça fait beaucoup oui ).

    Quand je clique sur le bouton export, il me met une erreur ( voir erreur hresult en piece jointe ) , donc impossible de générer le fichier excel.

    J'essaye donc de selectionner toutes les lignes du datagridview, je fais un CTRL+c , le curseur tourne puis il me met une erreur " system.outOfMemory exception ..... ça veut tout dire lol , donc impossible de copier mon datagridview.

    J'ai essayé de faire l'export au demarrage, supprimer des processus pour avoir de la memoire mais rien, comment je peux faire pour récupérer mes resultats ?

    Y a til un moyen de dire à l'ordi d'utiliser plus de ressource dans ma ram pour récupérer mon fichier ou que le logiciel ne plante pas ?

    Merci à vous

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Et comment fais-tu pour créer ton fichier Excel ? Automation ? OleDB comme pour une base de données ? OpenXML ?

    Out of memory, c'est dépasser la mémoire disponible.

    Si tu fais de l'automation regarde l'un l'ou l'autre. C'est à peu près la même chose et j'en ai marre de ne répéter

    https://www.developpez.net/forums/d1...l/#post9484493
    https://www.developpez.net/forums/d1...s/#post8497640

    Pour faire des fichiers Excel sans avoir Excel

    EPPlus


    ClosedXML
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut
    ok ,
    merci pour l'information, je regarderais ça.

    D'apres ce que j'ai vu, pour créer le fichier excel, on fait appel à une methode:

    Code c# : 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
     
    public static void DataGridVersExcel(DataGridView dgView, String unFichier, string strEnteteDeFichier, int startColumn)
            {
                int i = 0;
                int j = 0;
                try
                {
                    ExcelApplication excel = new ExcelApplication();
                    Workbook exbook = (Workbook)excel.Workbooks.Add(Missing.Value);
     
                    Worksheet exsheet = (Worksheet)excel.ActiveSheet;
                    //Double[] Totaux= new Double[4];
     
                    //Mise en forme de l'en-tête de la feuille Excel
     
                    Range r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", Missing.Value);
     
                    foreach (DataGridViewColumn ch in dgView.Columns)
                    {
                        if (ch.Visible && ch.CellType.Name != "DataGridViewImageCell")
                        {
                            r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", Missing.Value);
     
                            exsheet.Cells[1, i + 1] = ch.HeaderText.Trim();
                            r.Interior.ColorIndex = XlColorIndex.xlColorIndexAutomatic;
                            r.Font.Bold = true;
                            r.Font.Color = XlRgbColor.rgbBlue;
                            r.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic, Missing.Value);
                            r.EntireColumn.AutoFit();
                            i++;
                        }
                    }
     
                    j = 2;
     
                    foreach (DataGridViewRow uneLigne in dgView.Rows)
                    {
                        i = 1;
                        foreach (DataGridViewColumn uneColonne in dgView.Columns)
                        {
                            if (uneColonne.Visible && uneColonne.CellType.Name != "DataGridViewImageCell")
                            {
                                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(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, 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)
                {
                    MessageBox.Show(ex.Message);
                }
            }

    voila ce que est fait, , y a t-il un moyen de l'optimiser pour éviter le problème concernant la mémoire ?
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2003] Formater export Excel vers Word via signet
    Par polemos dans le forum VBA Word
    Réponses: 6
    Dernier message: 24/11/2011, 14h33
  2. [AC-2007] export au format Excel impossible
    Par alassanediakite dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/05/2010, 19h55
  3. Export Excel "Impossible d'agrandir la plage nommée"
    Par jean-paul lepetit dans le forum Access
    Réponses: 15
    Dernier message: 22/05/2007, 09h55
  4. [C#][EXCEL] import/export de données via excel
    Par desopedr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/12/2006, 10h10

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