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

ASP.NET Discussion :

Problème dans la génération d'un fichier excel [Débutant]


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    971
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 971
    Par défaut Problème dans la génération d'un fichier excel
    Bonjour
    pour commencer, bonne année à tous et plein de bonnes choses !

    Je poste un petit message car j'ai un petit souci dans un logiciel windowsform, développé avec visual studio 2010.

    Lorsque je lance une requête, le résultat apparaît dans un datagridview et j'ai un bouton qui permets de sauvegarder le résultat dans un fichier excel .
    Pour certaines requêtes, il me met la fameuse erreur " HRESULT: 0x800A03EC" . le plus étrange, quand je lance d'autres requêtes, l'enregistrement se fait normalement et le fichier fait environ 20000lignes, mais pour certaines requêtes qui me ressort que 2 lignes, j'ai l'erreur qui apparaît.


    j'ai fais pas mal de recherche et apparemment ça doit être lié à Excel, il m'a semblé un jour avoir fait une réparation rapide d'office 365 et ça fonctionné de nouveau, mais j'ai retenté la manipulation mais rien n'y fait.

    voici un extrait de ma procédure qui est utilisé pour la sauvegarde dans un fichier 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
     
     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
                    /*exsheet.Cells[1, 1] = strEnteteDeFichier;
                    Range r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", Missing.Value);
                    r.Interior.ColorIndex = XlColorIndex.xlColorIndexAutomatic;
                    r.Font.Bold = true;
                    r.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic, Missing.Value);
                    r.EntireColumn.AutoFit();//Fin de la mise en forme de l'en-tête.*/
                    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);
                           // r = exsheet.Range[Convert.ToChar(65 + i).ToString() + "1", Missing.Value];
                            //exsheet.Cells[2, i + 1] = ch.HeaderText.Trim();
                            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 = 3;
                    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);
                }
    merci pour vos conseils

  2. #2
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    971
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 971
    Par défaut
    Pour information, voici l'erreur généré

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 921
    Par défaut
    Je pense que ton problème se situe sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", Missing.Value);
    Que ce passe-il lorsque (65 + i) dépasse 90 ?
    Tu cherches une cellule dont l'adresse est "[1"... puis "\1", puis "]1", puis "^1",...

    Il faut transformer ton numéro de colonne en nom de colonne :
    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
    static String ColumnToLetter(Int32 column)
    {
        Int32 dividend = column;
        String result = String.Empty;
     
        while (dividend > 0)
        {
            var modulo = (dividend - 1) % 26;
            result = Convert.ToChar(65 + modulo) + result;
     
            Double x = (dividend - modulo) / 26;
            dividend = (Int32)Math.Floor(x);
        }
     
        return result;
    }

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    971
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 971
    Par défaut
    J'ai constaté que l'erreur généré est du à mon logiciel, je compte changer des methodes pour sauvegarder mes données

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/04/2015, 18h55
  2. [Excel] Ecriture dans les cellules d'un fichier excel
    Par xianxian620 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/05/2008, 18h02
  3. Réponses: 5
    Dernier message: 30/01/2008, 14h47
  4. génération d'un fichier Excel
    Par étoile de mer dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/04/2007, 13h18
  5. RMI: problème dans la génération du stub
    Par jouidos dans le forum Langage
    Réponses: 4
    Dernier message: 23/12/2006, 11h50

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