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 :

exporter liste view vers fichier excel


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut exporter liste view vers fichier excel
    BOnjour, j'ai réussi enfin réussi à exporter ma belle liste view avec les couleurs vers un fichier excel, mais dommage ce dernier est pal, il n 'a aucune couleur en de la mauvaise organisation, et aussi il n y pas de bourdure ni rien du tout.mes donnée du style 05/09 se transforme en date que que ce sont des chaines.

    Prière de m'orienter pour avoir un fichier excel bien présenté.

    ci dessous le code source :

    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
    try
                {
                    string[] st = new string[lvListeTypes.Columns.Count];
                    System.IO.DirectoryInfo di = new DirectoryInfo(@"c:\");
                    if (di.Exists == false)
                        di.Create();
                    StreamWriter sw = new StreamWriter(@"c:\Rapport.xls", false);
                    sw.AutoFlush = true;
                    for (int col = 0; col < lvListeTypes.Columns.Count; col++)
                    {
     
                        sw.Write("\t" + lvListeTypes.Columns[col].Text.ToString());
                    }
                    int rowIndex = 0;
                    int row = 0;
                    string st1 = "";
                    for (row = 0; row < lvListeTypes.Items.Count; row++)
                    {
                        st1 = "\n";
                        if (rowIndex <= lvListeTypes.Items.Count)
                        {
                            rowIndex++;
                            for (int col = 0; col < lvListeTypes.Columns.Count; col++)
                            {
                                st1 = st1 + "\t" + lvListeTypes.Items[row].SubItems[col].Text.ToString();
     
                            }
                            sw.Write(st1);
                        }
     
                    }
                    sw.Close();
                    FileInfo fil = new FileInfo(@"c:\Rapport.xls");
     
                    if (fil.Exists == true)
                    {
                        MessageBox.Show("Exportation Réalisée Avec Succès Vers Excel", "Exportation En Excel", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        //this.Close();
                    }
                    else
                        MessageBox.Show("Echec D'Exportation Vers Excel", "Exportation En Excel", MessageBoxButtons.OK, MessageBoxIcon.Error);
     
                }
     
                catch (Exception ex)
                {
                }

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    A première vue, tu ne fais rien d'autre que de créer un fichier CSV, auquel tu attribues "frauduleusement" l'extension XLS. Mais fondamentalement, ce n'est pas un fichier Excel et il ne bénéficiera donc pas des fonctionnalités de présentation d'Excel.

    Pour créer un vrai fichier Excel, tu vas devoir regarder soit du côté des librairies d'Interop Office (http://msdn.microsoft.com/en-us/libr...rop.excel.aspx), soit du côté d'une librairie émettant de l'OOXML comme l'Open XML SDK 2.0 publié par Microsoft (http://msdn.microsoft.com/en-us/libr...readsheet.aspx).

    Pour un exemple de génération d'un classeur Excel 2010 avec l'Open XML SDK 2.0, voir ici : http://msdn.microsoft.com/en-us/libr.../hh180830.aspx.

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    merci pour vos eclairssissements
    j'ai déjà testé d'Interop Office mais je ne trouve pas la librairie 2010 sachant que j'ai un excel 2010

  4. #4
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    voila j'ai cherché un peu sur internet j'ai trouvé le code suivant :
    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
    65
    66
    67
    68
    69
    70
    private void btnExporter_Click(object sender, EventArgs e)
            {
                string filename = GetFileName();
     
                //Exit code if no file was selected
                if (string.IsNullOrEmpty(filename))
                    return;
     
                Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application();
                xla.Visible = false; //Change to false so Excel isn't visible
     
                Microsoft.Office.Interop.Excel.Workbook wb = xla.Workbooks.Add(Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);
     
                Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xla.ActiveSheet;
     
                int i = 1;
                int j = 1;
     
                foreach (ListViewItem comp in lvListeTypes.Items)
                {
                    ws.Cells[i, j] = comp.Text.ToString();
     
                    //MessageBox.Show(comp.Text.ToString());
                    foreach (ListViewItem.ListViewSubItem drv in comp.SubItems)
                    {
                        ws.Cells[i, j] = drv.Text.ToString();
                        j++;
                    }
                    j = 1;
                    i++;
                }
     
                SaveWorkbook(wb, filename);
     
                //Close Excel (don't forget this otherwise Excel will keep running in memory)
                xla.Quit();
                xla = null;
     
                MessageBox.Show(string.Format("Data is save to {0}", filename));
            }
            private string GetFileName()
            {
                string filename = string.Empty;
                SaveFileDialog dialog = new SaveFileDialog();
     
                dialog.InitialDirectory = @"C:\"; // change this to your own default location. Save to the root of C:\ is not a good practice.
                DialogResult result = dialog.ShowDialog();
                if (result == DialogResult.OK)
                {
                    filename = dialog.FileName;
                }
     
                return filename;
            }
     
            private void SaveWorkbook(Microsoft.Office.Interop.Excel.Workbook wb, string filename)
            {
                //Remove the extension from the filename. The SaveAs will add the approriate extension it self (at least it does with Excel 2007)
                string localfilename = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(filename), System.IO.Path.GetFileNameWithoutExtension(filename));
     
                // If you are sure to override the file 
                if (System.IO.File.Exists(localfilename))
                    System.IO.File.Delete(localfilename);
     
                //wb.SaveAs(localfilename, XlFileFormat.xlExcel12); //generates a xlsb file (Excel 2007)
                //wb.SaveAs(myfilename, XlFileFormat.xlExcel9795); //generates a excel 97 xls file
                wb.SaveAs(localfilename, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
     
            }
    Mon code ne m'affiche pas les entete de colonne ??? que je veux mettre e gras ainsi que les données de la 1ere cononne ???
    mon objectif maintenant c'est de mettre des bordures pour toutes les données
    empecher la premiere colonne de se convertir en date
    colorer certaines cases selon un test if

    je ne sais pas comment proceder

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Worksheet.Cells retourne une instance de la classe Range, laquelle comporte des méthodes pour modifier la mise en page de la portée. La méthode BorderAround, par exemple, permet de donner une bordure en spécifiant ses caractéristiques (trait, couleur, ...).

  6. #6
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Bonjour, PrQ LES ENTETES DE COLONNES NE SONT PAS AFFICHé ,

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    D'après ce que je lis dans ton message #4, les entêtes de colonnes ne sont pas créés dans le fichier Excel pour la simple et bonne raison que tu ne les écris pas.

    Dans ton code oiginal, tu faisais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int col = 0; col < lvListeTypes.Columns.Count; col++)
    {
        sw.Write("\t" + lvListeTypes.Columns[col].Text.ToString());
    }
    Je ne vois rien d'équivalent dans le nouveau.

  8. #8
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    exactement, je ne sais pas comment ajouter le nouveau code dans dans sheet

  9. #9
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Bonjoue, j'ai reussi a afficher mes colonnes comme suit :
    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
    foreach (ListViewItem comp in lvListeTypes.Items)
                {
                    ws.Cells[i, j] = comp.Text.ToString();
     
                    foreach (ListViewItem.ListViewSubItem drv in comp.SubItems)
                    {
                        ws.Cells[i, j] = drv.Text.ToString();
                        j++;
                    }
                    j = 1;
                    i++;
                }
     
                for (int a = 1; a < lvListeTypes.Columns.Count + 1; a++)
                {
                    xla.Cells[1, a] = lvListeTypes.Columns[a - 1].Text;
                }
    Pour la mise en forme j'ai pas trouvé d'exemple sur internet
    est ce que vs pouvez m'orienter SVP ..?

Discussions similaires

  1. Exporter résultat requête vers Fichier Excel inexistant.
    Par Mykimix dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/11/2012, 14h26
  2. Exportation HTML/PHP vers fichier Excel existant
    Par fthem dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 10/01/2008, 15h07
  3. export de données vers fichier excel
    Par babafredo dans le forum ASP
    Réponses: 4
    Dernier message: 12/09/2007, 09h27
  4. exporter requete access vers fichier excel
    Par pmax35 dans le forum ASP
    Réponses: 11
    Dernier message: 07/08/2007, 17h06
  5. Exporter contenu DBgrid vers fichier excel
    Par luluofmars dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/06/2006, 13h21

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