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

Documents Java Discussion :

Modifier un fichier Excel


Sujet :

Documents Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Par défaut Modifier un fichier Excel
    Bonjour,

    J'utilise ce code pour pouvoir manipuler un fichier Excel.
    Ce code écrase mon fichier et le remplace avec un nouveau, ce que je souhaite c'est modifier le'ancien fichier en ajoutant des nouvelles valeurs mais tout en gardant les anciennes valeurs.
    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
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
     
    public class Excel {
        public static void main(String[] args) {
     
           //1. Créer un Document vide
           XSSFWorkbook wb = new XSSFWorkbook();
           //2. Créer une Feuille de calcul vide
           Sheet feuille = wb.createSheet("new sheet");
           //3. Créer une ligne et mettre qlq chose dedans
           Row row = feuille.createRow((short)0);
           //4. Créer une Nouvelle cellule
           Cell cell = row.createCell(0);
           //5. Donner la valeur
           cell.setCellValue(1.2);
     
           //Ajouter d'autre cellule avec différents type
           /*int*/row.createCell(1).setCellValue(3);
           /*char*/row.createCell(2).setCellValue('c');
           /*String*/row.createCell(3).setCellValue("chaine");
           /*boolean*/row.createCell(4).setCellValue(false);
     
           FileOutputStream fileOut;
           try {
             fileOut = new FileOutputStream("nouveauFichier.xlsx");
             wb.write(fileOut);
             fileOut.close();
           } catch (FileNotFoundException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           }
        }
    }
    Merci pour vos réponses

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    Au lieu de créer un nouveau fichier à chaque fois, ouvre un fichier, modifies le et sauves le.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    Effectivement c'est ce que je n'arrive pas à faire.
    Avez-vous une idée / un exemple qui pourrait m'aider svp ?

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    Ce n'est pas les exemples qui manquent sur internet, il faut un peu prendre la peine de chercher.

    En voici déjà un : https://jmdoudoux.developpez.com/cou...-documents.php
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Par défaut
    Re Bonjour,

    Merci beaucoup pour vos réponses.
    Effectivement j'avais jeté un coup d’œil sur ce tuto, le seul problème c'est que je travaille avec la nouvelle version d'excel (xlsx).
    Et que quand j’utilise cette fonction (qui marche parfaitement pour les anciennes version (xls).

    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
     FileOutputStream fileOut;
     
    		      POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(TestH.xlsx"));
    		      HSSFWorkbook wb = new HSSFWorkbook(fs);
    		      HSSFSheet sheet = wb.getSheetAt(0);
    		      HSSFRow row = sheet.getRow(0);
     
    		      HSSFCell cell = row.getCell((short) 0);
    		      if (cell != null)
    		          row.removeCell(cell);
    		      cell = row.createCell((short) 0);
    		      cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    		      cell.setCellValue(new HSSFRichTextString("données modifiées"));
     
    		      fileOut = new FileOutputStream("TestH.xlsx");
    		      wb.write(fileOut);
    		      fileOut.close();
    		    } catch (FileNotFoundException e) {
    		      e.printStackTrace();
    		    } catch (IOException e) {
    		      e.printStackTrace();
    J'ai l'erreur ci'dessous qui s'affiche :

    Exception lors de la lecture du script [Acte.TEST2] [CRFCN0019E: Exception liée au script de test Rational à la ligne 47 du script Acte.TEST2 - org.apache.poi.poifs.filesystem.OfficeXmlFileException : The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF).].


    Pouvez-vous m'aider svp ?

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    L'erreur semble pourtant t'indiquer d'utiliser XSSF et non HSSF.

    Comme le montre le tableau ici https://poi.apache.org/components/spreadsheet/ tu verras que HSSF est pour les ancien fichier XLS et XSSF est fait pour les XLSX.

    Tu n'as donc pas beaucoup a changer c'est déja ça

    D'ailleurs a l'avenir tu peux ne pas utiliser les

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HSSFWorkbook 
    HSSFSheet
    HSSFRow
    HSSFCell
    mais directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Workbook 
    Sheet
    Row
    Cell
    de cette manière ton code ne changera pas si tu repasse en HSSF ou autres
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Par défaut
    Super merci beaucoup pour ton aide.

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

Discussions similaires

  1. [Excel] Modifier un fichier
    Par Titus94120 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/06/2008, 08h42
  2. Utiliser et modifier un fichier excel en ligne
    Par nuts2207 dans le forum Excel
    Réponses: 1
    Dernier message: 02/04/2008, 18h43
  3. Réponses: 1
    Dernier message: 26/03/2008, 22h12
  4. [JexcelAPI]Modifier un fichier excel
    Par sissi_l dans le forum Documents
    Réponses: 3
    Dernier message: 01/06/2007, 01h36
  5. [VB] Ouvrir et modifier un fichier Excel en arrière-fond
    Par truman dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2006, 18h49

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