Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affiche le contenu d'un fichier Excel sur listview

Affiche le contenu d'un fichier Excel sur listview

    22 mars 2023 à 19:04:50

    je vodrais afficher le contenu d'un fichier excel sur une listview dans visual studio

    J'ai ajouté le COM,

    J'ai ajouté les using

    et voici le code que j'ai commencé mais je suis bloqué. je pense comprendre ce qu'il faut faire

    mais ca marche pas, , je demande votre aide.

    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
    namespace E14_Cours_3;
    
    public partial class Form1 : Form
    {
        public static Excel.Application? excelApp;
        public static Excel.Workbook? excelBook;
        public static Excel.Worksheet? excelSheet;
        public static Excel.Range? excelRange;
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
            excelApp = new Excel.Application();
            if (excelApp == null)
            {
                MessageBox.Show("Désolé, cette application nécessite Excel. Veuillez l'installer et réessayer.");
                Application.Exit();
            }
            else
            {
                try
                {
                    excelBook = excelApp.Workbooks.Open(AppContext.BaseDirectory + "TestCOM.xlsx");
                    excelSheet = excelBook.Worksheets[1];
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Une erreur s'est produite.");
                    Application.Exit();
                }
            }
    
        }
    
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            excelApp!.Quit();
            GC.Collect();
            GC.WaitForPendingFinalizers();
    
     
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            ListViewItem lvi;
            int lastRow = excelSheet!.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row;
            int lastCol = excelSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Column;
    
            MessageBox.Show("le nombre de ligne: " + lastRow + "nombre colonne: " + lastCol);
    
            for (int i = 0; i < lastRow; i++)
            {
                
                
                
                for (int j = 0; j < lastCol; j++)
                {
    
                }
            }
        }
    
    }


    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2023 à 19:55:10

      Pourquoi COM ?

      Pourquoi pas l'utilisation de PIA .NET d'Office (plus safe) ?

      Pourquoi ne pas utiliser OOXML SDK qui permet la lecture et la génération de fichier Office 2011 et supérieurs ?

      Pourquoi des variables statiques ?

      Ligne 31, pourquoi le 2ème onglet ?

      Pourquoi passer par une listView plutôt que de "hoster" directement le contrôle Excel dans votre application WinForm ?

      Que cherchez-vous à afficher ?

      Les formules ?

      Les données bruts, dans mise en page ?

      Les données mise en forme ?

      etc...

      -
      Edité par bacelar 23 mars 2023 à 9:23:30

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        22 mars 2023 à 20:28:08

        - J'ai utilisé le com car c'etait le seul que je connaissais et qui me permet de trvailler ace excel sur visual studio.

        - je cherche à afficher un fichier Excel de ce format, comme sur l'image jointe.

        je constate que les lignes en jaune sont impaires, du coup je pense pouvoir utiliser modulo.

        c'est à ce niveau que je suis bloqué.

        Merci

        Merci

        -
        Edité par mgf 22 mars 2023 à 20:28:43

        • Partager sur Facebook
        • Partager sur Twitter
          23 mars 2023 à 9:30:45

          L'ignorance n'est jamais bonne conseillère.

          Pourquoi ne pas évaluer les autres options, qui sont bien moins contraignantes ?

          Pourquoi faire votre truc au doigt mouillé ?

          Vous devriez avoir des spécifications du format de fichier en entré.

          Sinon, si c'es le jaune le marqueur de votre algorithme, bin pourquoi ne pas lire cette donnée directement dans le fichier ?

          C'est pas un fichier CSV un fichier XLSX.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            23 mars 2023 à 17:57:36

            Je vais voir  avec les autres options si c'est plus simple d'afficher le fichier Excel sur Visual studio.

            Merci

            • Partager sur Facebook
            • Partager sur Twitter
              24 mars 2023 à 18:08:01

              Si le but est d'afficher un fichier Excel comme sous Excel, le plus simple, c'est de faire en sorte que c'est Excel qui l'affiche : Host de composant ActiveX.
              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                25 mars 2023 à 16:03:12

                je parviens à l'afficher sur deux listview en fonction de la parité de la ligne, mais il me l'affiche sous sous forme de tableau de ligne

                je pense que je me suis emmêlé

                using Excel = Microsoft.Office.Interop.Excel;
                
                namespace E14_Cours_3;
                
                public partial class Form1 : Form
                {
                    public static Excel.Application? excelApp;
                    public static Excel.Workbook? excelBook;
                    public static Excel.Worksheet? excelSheet;
                    public static Excel.Range? excelRange;
                
                    public Form1()
                    {
                        InitializeComponent();
                    }
                
                    private void Form1_Load(object sender, EventArgs e)
                    {
                        excelApp = new Excel.Application();
                
                        if (excelApp == null)
                        {
                            MessageBox.Show("Désolé, cette application nécessite Excel. Veuillez l'installer et réessayer.");
                
                            Application.Exit();
                        }
                        else
                        {
                            try
                            {
                                excelBook = excelApp.Workbooks.Open(AppContext.BaseDirectory + "testCOM.xlsx");
                
                                excelSheet = excelBook.Worksheets[1];
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("Une erreur s'est produite.");
                
                                Application.Exit();
                            }
                        }
                
                    }
                
                    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
                    {
                        excelApp!.Quit();
                
                        GC.WaitForPendingFinalizers();
                
                        GC.Collect();
                
                    }
                
                    private void btnLireExcel_Click(object sender, EventArgs e)
                    {
                
                        int lastRow = excelSheet!.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row;
                
                        int lastCol = excelSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Column;
                
                        //MessageBox.Show("le nombre de ligne: " + lastRow + " nombre colonne: " + lastCol);
                
                        for (int i = 1; i < lastRow; i++)
                
                        {
                            Excel.Range rowRange = excelSheet.Rows[i];
                
                            string[] rowData = new string[lastCol];
                
                            //Recuperer les données de la ligne 
                
                            for (int j = 1; j < lastCol; j++)
                            {
                                Excel.Range cell = rowRange.Cells[j];
                
                                if (cell.Value != null)
                                {
                                    rowData[j - 1] = cell.Value.ToString();
                                }
                
                            }
                
                            ListViewItem item = new ListViewItem(rowData);
                
                            //Ajout de l'élément en fonction de la parité de la ligne
                
                            if (i % 2 == 0)
                            {
                                LV2.Items.Add(item);
                
                            }
                            else
                            {
                                LV1.Items.Add(item);
                            }
                
                        }
                
                    }
                }

                voici mon code

                • Partager sur Facebook
                • Partager sur Twitter
                  27 mars 2023 à 15:04:06

                  Qu'est ce que vous cherchez à faire ???

                  Vous voulez tous mettre dans une drop down list ???

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                    27 mars 2023 à 20:34:17

                    Non pas dans une liste déroulante mais juste afficher.

                    je parviens à l'afficher  mais comme tu vois sur l'image ci-dessous, il met tout sur une ligne.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 mars 2023 à 10:59:04

                      C'est pas très clair. Pouvez-vous faire un dessin de ce que vous voulez obtenir à la fin ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                        28 mars 2023 à 19:27:53

                        c'est aussi sans doute parce que le listView n'est probablement pas le bon contrôle pour faire ce que tu veux au final
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Affiche le contenu d'un fichier Excel sur listview

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown