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 :

Pb avec POI et la modification d'un fichier Excel


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut Pb avec POI et la modification d'un fichier Excel
    Bonjour, je dois générer des tableaux de bord, en partant d'une trame (fichier excel) contenant déjà des formules (pourcentages, sommes, ...) et une mise en page.

    Je souhaite donc simplement remplir des cellules avec des valeurs provenant d'une base de données. Le nombre de lignes peut varier.

    J'ai pas eu trop de souci, mais j'ai constaté que les formules ne sont pas appliquées ! C'est à dire qu'il faut que l'utilisateur revienne sur le fichier Excel, édite une case concernée par une formule pour que la formule s'applique !

    Qqn a t'il déjà rencontré le pb ? C'est très emm...

    D'autre part, j'aimerai savoir s'il est possible de faire l'équivalent d'un "Copier ligne, insérer les cellules copiées", avec tout ce que cela entraine sur Excel (conservation des styles, mises à jour des formules, etc)

    Merci !

    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
     
            POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("c:\\TableauDeBord2.xls"));
            HSSFWorkbook wb = new HSSFWorkbook(fs);
            HSSFSheet s = wb.getSheetAt(0);
            HSSFRow r = null;
            HSSFCell c = null;
     
            short rownum = 0;
     
            for (rownum = (short) 9; rownum < 11; rownum++)
            {
                r = s.getRow(rownum);
     
                // Les styles sont bien conservés, mais les formules pas appliqués !!!
     
                c = r.getCell((short) 1); c.setCellValue(20);
                c = r.getCell((short) 2); c.setCellValue(53);
                c = r.getCell((short) 3); c.setCellValue((double) 1068);
     
                c = r.getCell((short) 4); c.setCellValue("Suisse");
                c = r.getCell((short) 5); c.setCellValue(51);
                c = r.getCell((short) 6); c.setCellValue(1024);
     
                //Si on fait ça, les formules sont bien appliquées (uniquement avec createCell ??)
                //Mais du coup, c'est fastidieux, et il faut revoir le formatage de la valeur (%,...) 
                //c = r.createCell((short) 7); c.setCellType(HSSFCell.CELL_TYPE_FORMULA); 
                //c.setCellFormula("G10/$I$3*$K$3/D10");
     
                c = r.getCell((short) 8); c.setCellValue(85);
                c = r.getCell((short) 9); c.setCellValue(924);
     
                c = r.getCell((short) 11); c.setCellValue(913);
                c = r.getCell((short) 12); c.setCellValue(75);
                c = r.getCell((short) 13); c.setCellValue(1192);
            }
     
            // Imposssible d'enlever une ligne ==> Height=0
     
                s.getRow((short) 12).setHeight((short) 0);
                s.getRow((short) 13).setHeight((short) 1);
     
            // Write the output to a file
            FileOutputStream fileOut = new FileOutputStream("c:\\test_TDB.xls");
            wb.write(fileOut);
            fileOut.close();

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Par défaut
    j'ai aussi le meme probleme l'as tu résolu?

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    plus ou moins.

    il existe une méthode qui permet d'exécuter la formule d'une cellule.
    c'est relativement peu performant.

    globalement, les événements Excel ne sont pas exécutés. il faut tout simuler dans POI.

    d'une manière générale, POI n'est pas du tout adapté à la constitution d'un fichier Excel complexe. il faut se contenter de tableaux à plat, et laisser de coté les fonctionnalités Excel.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Par défaut
    Citation Envoyé par alfouik Voir le message
    plus ou moins.

    il existe une méthode qui permet d'exécuter la formule d'une cellule.
    c'est relativement peu performant.

    globalement, les événements Excel ne sont pas exécutés. il faut tout simuler dans POI.

    d'une manière générale, POI n'est pas du tout adapté à la constitution d'un fichier Excel complexe. il faut se contenter de tableaux à plat, et laisser de coté les fonctionnalités Excel.
    Merci pour ta reponse
    Pourrais tu préciser la méthode qui permet d'exécuter la formule d'une cellule et ce que signifie il faut tout simuler dans POI?

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Par défaut insertion ,repetition lignes et colonnes dans une feuille excel
    Bonjour,

    Je dois générer un fichier contenant des lignes à générer dynamiquement. J'interroge une table dans laquelle il y'a des clients (nom, prenom, salaire,etc )et les clients peuvent varier en fonction du mois.
    Je cherche donc comment insérer plusieurs lignes dans une feuille excel . Sachant qu'il y'a également des formules dans les colonnes..

    Pouvez-vous m'aider svp.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Par défaut
    J'ai pas eu trop de souci, mais j'ai constaté que les formules ne sont pas appliquées ! C'est à dire qu'il faut que l'utilisateur revienne sur le fichier Excel, édite une case concernée par une formule pour que la formule s'applique !
    Vérifie que l'option recalcul auto est cochée sur ta feuille excel car sur JXL je n'ai pas ce pb sinon teste avec {F9} (recalcul).
    Sur access j'ai eu ce pb que j'ai solutionné en adjoignant au classeur un module VBA qui faisait un enregistré-sous dès l'ouverture puis une réouverture ce qui avait pour effet de valider ttes les formules.
    Autre piste les nombres collés dans tes cellules sont peut-être en format texte, donc modifie tes formules pour les convertir en nbre avec CNUM(cellule)

    par contre si vous avez une solution pour mon pb de caractères diacritiques je suis preneur > http://www.developpez.net/forums/sho...d.php?t=521630

Discussions similaires

  1. modifications d'un fichier excel
    Par starwaso dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/01/2014, 13h37
  2. Réponses: 2
    Dernier message: 29/09/2011, 14h26
  3. [POI] Ecriture à la suite d'un fichier Excel
    Par Titelouve dans le forum Documents
    Réponses: 0
    Dernier message: 22/10/2010, 12h06
  4. [POI] Problème écriture/lecture dans un fichier Excel
    Par steuve dans le forum Documents
    Réponses: 6
    Dernier message: 02/07/2007, 15h47
  5. Date de modification d'un Fichier Excel
    Par lamama dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/06/2007, 16h01

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