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

API standards et tierces Java Discussion :

Créer fichier Excel à partir des données d'un autre


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Créer fichier Excel à partir des données d'un autre
    Bonjour, je viens vous demander de l'aide pour un problème que je rencontre actuellement.
    J'aimerais pouvoir créer un fichier Excel à partir des données contenues dans les cellules d'un autre. Il me semble que cela est tout à fait possible, j'ai entrevu des réponses sur le Net en faisant des recherches mais rien ne me paraît vraiment solide.

    J'ai déjà le code pour pouvoir récupérer les données d'une feuille 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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    //Création de la classe principale fenetre. 
    public class fenetre extends JFrame implements ActionListener
    {
    	//Création de l'objet pan qui est un pannel (où l'on affiche graphiquement nos composants comme les boutons)
    	private JPanel pan = new JPanel();
     
    	//Création de deux objets JButton, qui seront mes deux bouton
    	private JButton bouton = new JButton(" Créer un fichier ");
    	private JButton bouton2 = new JButton(" Ouvrir un fichier ");
    	HSSFCell cellule;
    	int i = 0;
    	/*Méthode main qui va créer un objet à partir de notre classe principale. Cet objet va créer un pannel
    	 * graphique : une fenêtre
    	 */
        public static void main(String[] args) throws Exception
        {
            fenetre fen = new fenetre(); 
        }    
     
        //Constructeur de classe, il détermine à l'aide la méthode comment sera paramétré le tout
        public fenetre()
        {  
        	//Détermine le titre de la fenêtre
        	this.setTitle("Automate Excel");
     
        	//Détermine la taille de la fenêtre
            this.setSize(550, 400);
     
            //Permet de centre la fenêtre au centre de l'écran au démarage de l'application
            this.setLocationRelativeTo(null);
     
            //Permet de stoper le processus lorsque la croix rouge est cliquée
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     
            //Permet d'empêcher le redimensionnement de la fenêtre
            this.setResizable(false);
     
            //Ajoute des écoutes sur les boutons. Cela permettra d'agir lorsque les boutons seront cliqués
            bouton.addActionListener(this);
            bouton2.addActionListener(this);
     
            //Rajoute les deux boutons à notre pannel graphique
            pan.add(bouton);
            pan.add(bouton2); 
     
            //Initialisation du pannel selon les réglages indiqués au dessus
            this.setContentPane(pan);
     
            //Rend visible notre pannel (true), si le paramètre était (false) le pannel ne s'afficherait pas.
            this.setVisible(true);
        }
     
    	@Override
    	//Classe qui va déclencher une action lorsque les écoutes de boutons réagissent à un clique
    	public void actionPerformed(ActionEvent e) 
    	{
    		//On déclare un objet qui contient la source du clique (bouton 1 ou 2)
    		Object source=e.getSource();
     
    		//Si notre objet vaut le premier bouton
    		if(source==bouton)
    		{
    			//On lance main1()
    			 try 
    			 {
    				CreerFichier();
    			 }
    			 catch (Exception e1) 
    			 {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			 }
    		 }
    		 //sinon
    		 else 
    		 {
    			 System.out.println("Deuxième bouton");
     
    			 /*On créer un objet JFileChooser, qui va permettre à l'utilisateur de chercher sur son ordinateur le 
    			 * fichier qu'il veut ouvrir
    			 */
    			 i = 1;
    			 JFileChooser dialogue = new JFileChooser(new File("."));
    			 PrintWriter sortie;
    			 File fichier;
     
    			 /*On créer un filtre, qui permet de voir seulement les fichiers en .csv et xls. Le filtre se nomme : 
    			 * fichiers Excel
    			 */
    			 dialogue.addChoosableFileFilter(new FileNameExtensionFilter("fichiers Excel", "xls"));
     
    			 /*On affiche alors en graphique juste les fichiers filtrés. Soit le contraire de tout accepter, donc on
    			 * utilise le paramètre (false)
    			 */
    	    	 dialogue.setAcceptAllFileFilterUsed(false);
     
    	    	 //On affiche aussi une autre sélection qui elle affiche tout les fichiers sans filtre
    	         dialogue.setAcceptAllFileFilterUsed(true);
     
     
    	         //Si l'utilisateur à sélectionné un fichier
    			 if (dialogue.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
    			 {
    				 //On créer un objet qui retient le chemin du fichier
    				 fichier = dialogue.getSelectedFile();
    			     try 
    		  	     {
    			    	 sortie = new PrintWriter
    				     (new FileWriter(fichier.getPath(), true));
     
    			    	  //On créer une fenêtre qui confirme à l'utilisateur le fichier qu'il a sélectionné
    			    	 JOptionPane.showMessageDialog(null, "Vous avez sélectionné : " + dialogue.getSelectedFile().getPath());
     
    			    	// Lecture du fichier excel
    			    	 InputStream inp = new FileInputStream(fichier.getPath());
     
     
     
    			    	// recupère le fichier excel
    			    	 HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
     
    			    	// Recupére page 1 du fichier xls
    			    	 HSSFSheet sheet = wb.getSheetAt(0);
     
    			    	// nombre de ligne
    			    	 int nbLigneFichier1 = sheet.getPhysicalNumberOfRows();
     
    			    	 int nombreDeCelluleMax = 0;
     
    			    	 for (int ligne = 0; ligne < nbLigneFichier1; ligne++) 
    			    	 {
    			    		 // recuperation de chaque ligne
    			    		 HSSFRow row = sheet.getRow(ligne);
     
    			    		 // si la ligne contient au moins une cellule
    			    		 if (row != null) 
    			    		 {
    			    			 if (row.getPhysicalNumberOfCells() > nombreDeCelluleMax)
    			    		            nombreDeCelluleMax = row.getPhysicalNumberOfCells();
    			    		    }
     
    			    		}
    			    	 //On créer un objet POI pour pouvoir travailler dans le code le fichier ouvert par l'utilisateur
    			    	 //POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fichier));
     
    			    	 int nbColFichier1 = nombreDeCelluleMax;
    			    	 nombreDeCelluleMax = 0;
     
    			    	 // creation du tableau qui va contenir les differentes cellules
    			    	 String[][] tabFichier1 = new String[nbLigneFichier1][nbColFichier1];
     
    			    	 for (int ligne = 0; ligne < nbLigneFichier1; ligne++) {
    			    	     HSSFRow row = sheet.getRow(ligne);
    			    	     if (row != null) {
    			    	         for (int colonne = 0; colonne < nbColFichier1; colonne++) {
    			    	             HSSFCell cellule = row.getCell(colonne);
     
    			    	                         //affichage de test
    			    	                         System.out.println(cellule);
     
     
    			    	         }
    			    	     }
    			    	 }
    			    	 inp.close();
     
    				 } 
    			     catch (IOException e1)
    			     {
    			    	 // TODO Auto-generated catch block
    			    	 e1.printStackTrace();
    			     }
    		     }
    		 }		
    	}
    Ensuite j'ai aussi le code qui me permet de créer un nouveau fichier Excel (mais sans les données de celui ouvert auparavant... C'est là mon problème
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    public void CreerFichier() throws Exception
    	{
    		if (i == 0)
    		{
    		 // créer un nouveau fichier excel
            FileOutputStream out = new FileOutputStream("Feuille de route exemple.xls");
     
            // créer un classeur
            Workbook wb = new HSSFWorkbook();
            // créer une feuille
            Sheet mySheet = wb.createSheet("Exemple");
     
            //On créer un objet pour pouvoir créer des cellules
            Cell cell = null;
            //On créer un objet pour gèrer le style des cellules
            CellStyle cellStyle = null;
     
            //détermine la largeur des colonnes
            mySheet.setColumnWidth((short)0,(short)(15*256));
            mySheet.setColumnWidth((short)1,(short)(15*256));
            mySheet.setColumnWidth((short)2,(short)(15*256));
            mySheet.setColumnWidth((short)3,(short)(15*256));
            mySheet.setColumnWidth((short)4,(short)(15*256));
     
            // créer une ligne à la ligne 1 (0 ou la première ligne dans la feuille Excel)
            Row myRow = null;      
            myRow = mySheet.createRow(0);
     
            //Créer une ligne à la ligne 2 (1 ou la deuxième ligne) dans la feuille Excel
            Row myRow2 = null;
            myRow2 = mySheet.createRow(1);
     
            // Ajouter des données dans les cellules de la ligne 1 avec l'objet "myRow"
            cell = myRow.createCell(0);
            cell.setCellValue("Première case");
            cellStyle = wb.createCellStyle();
            cell.setCellStyle(cellStyle);
     
            cell = myRow.createCell(1);
            cell.setCellValue("Deuxième case");   
            cell.setCellStyle(cellStyle);
     
            cell = myRow.createCell(2);
            cell.setCellValue("Troisème case");
            cell.setCellStyle(cellStyle);
     
            cell = myRow.createCell(3);
            cell.setCellValue("Total additionné");
            cell.setCellStyle(cellStyle);
     
            cell = myRow.createCell(4);
            cell.setCellValue("Total multiplié");
            cell.setCellStyle(cellStyle);
     
     
            //Ajouter des données dans les cellules de la lige 2 avec l'objet "myRow2"
     
            //myRow2.createCell(0).setCellValue("1");
            cell = myRow2.createCell(0);
            cell.setCellType(Cell.CELL_TYPE_NUMERIC);
            cell.setCellValue(1);
     
            //myRow2.createCell(1).setCellValue("2");
            cell = myRow2.createCell(1);
            cell.setCellType(Cell.CELL_TYPE_NUMERIC);
            cell.setCellValue(2);
     
            //myRow2.createCell(2).setCellValue("3");
            cell = myRow2.createCell(2);
            cell.setCellType(Cell.CELL_TYPE_NUMERIC);
            cell.setCellValue(20);
     
            cell = myRow2.createCell(3);
            //Le type de la cellue est "FORMULE" cela permet de mettre une formule à l'intérieur
            cell.setCellType(Cell.CELL_TYPE_FORMULA);
            cell.setCellFormula("SUM(A2:C2)");
     
            cell = myRow2.createCell(4);
            cell.setCellType(Cell.CELL_TYPE_FORMULA);
            cell.setCellFormula("PRODUCT(A2:C2)");
     
            wb.write(out);
     
            System.out.println("Ca marche");
            out.close();
    		}
    Le if (i == 0) est là pour que le programme réagisse différemment si un fichier a été ouvert avant.

    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Bonjour

Discussions similaires

  1. [AC-2003] Exporter plusieurs fichiers excel à partir des données d'une requête
    Par Daphnoxbow dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 06/10/2009, 11h41
  2. C#: Ouvrir un fichier Excel, ajouter des donneés, et enregistrer
    Par soufian1364 dans le forum Services Web
    Réponses: 4
    Dernier message: 24/03/2009, 14h12
  3. Réponses: 1
    Dernier message: 08/10/2008, 15h30
  4. generation de fichier EXCEL à partir des fichiers .dbf
    Par ergo_proxy dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 19/06/2007, 17h53
  5. Réponses: 3
    Dernier message: 25/07/2005, 09h40

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