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 :

[Excel][WritableSheet]Insérer une ligne blanche dans le doc excel ?


Sujet :

Documents Java

  1. #1
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut [Excel][WritableSheet]Insérer une ligne blanche dans le doc excel ?
    Bonjour,

    j'ai besoin d'aide pour modifier une classe déjà existante.

    c'est une classe permettant de contruire un doc excel à partir d'une requête.

    j'ai ceci déjà présent dans la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ucl = URLClassLoader.newInstance(urls);
    c_WritableSheet = ucl.loadClass("jxl.write.WritableSheet");
    c_WritableCell = ucl.loadClass("jxl.write.WritableCell");
    pour ajouter les données dans le doc, il y a ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c_WritableSheet.getMethod("addCell", new Class[] {c_WritableCell}).invoke(sheet, new Object[] {label});
    dans la classe WritableSheet, pour ajouter une ligne il faut utiliser la méthode insertRow(int row)

    donc j'ai voulu mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private Object blank="1";
    c_WritableSheet.getMethod("insertRow", new Class[] {c_WritableCell}).invoke(sheet, new Object[] {blank});
    dans ce cas je n'ai pas d'erreur mais lorsque je veux ouvrir le fichier excel, il me dit qu'il est impossible de lire le fichier.

    donc j'ai essayé de modifier ce que j'ai rajouté mais chaque fois j'ai des erreurs, en général parce qu'il attend un Objetc et que moi j'essaie de lui passer un int.
    comment lui dire que je veux qu'il rajoute UNE ligne blanche ?

    MERCI
    Kyti

  2. #2
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    sans erreur de compilation mais fichier excel impossible à ouvrir aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Integer blank=new Integer(1);
    c_WritableSheet.getMethod("insertRow", new Class[] {c_WritableCell}).invoke(sheet, new Object[] {blank});
    HELP PLEASE
    Kyti

  3. #3
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    please
    Kyti

  4. #4
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Salut,

    Regarde la javadoc de JExcel....

    insertRow

    public void insertRow(int row)

    Inserts a blank row into this spreadsheet. If the row is out of range of the rows in the sheet, then no action is taken

    Parameters:
    row - the row to insert
    Si tu passes "blank" comme numéro de ligne à insérer, ça va pas passer si blank est autre chose qu'un int... Tu peux préciser ce qu'est ton objet blank exactement?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Es-tu sûr de bien avoir fermer tous les flux d'écriture lorsque tu as fini d'écrire dans ton fichier Excel ? (comme faire un .close() sur un InputStream ou un OutputStream une fois les opérations terminées)
    Peut-être est-ce pour cela que ton fichier résultat n'est pas lisible par Excel lui même...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    blank est un Integer en fait.
    j'ai déjà regardé la javadoc mais ça ne m'aide pas, je ne comprends pas ce qu'il faut metttre exactement, quoi que je fasse j'ai systématiquement une exception comme quoi insertRow(ce que je passe) n'ai pas trouvée

    pour ce qui est d'avoir tout fermé, la classe est déjà en fonctionnement c'est juste un ajout car toutes les lignes sont collées.
    donc oui il y a déjà tout ce qu'il faut.
    Kyti

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut Re: [WritableSheet]Insérer une ligne blanche dans le doc exc
    Citation Envoyé par Kyti
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Object blank="1";
    désolé, j'avais survolé un peu rapidement le code...
    Je veux bien que tu me dises que blank soit un Integer, mais à ce que je vois ce serait plutôt un Object dans la déclaration... tu as essayé en le déclarant en int?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    non au début j'avais mis un Object mais j'ai vite changé j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Integer blank=new Integer(1);
    et
    int blank=1;
    mais le problème c'est que comme la classe est écrite, je dois utiliser les méthodes getMethod(String name, Class[] parameterTypes) et invoke(Object obj, Object[] args)

    j'ai essayé plein de combinaisons mais j'ai du mal à sasir la logique de cette ligne. et chaque fois, les paramètres passés ne vont pas !
    Kyti

  9. #9
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    et avec un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    c_WritableSheet.getMethod("insertRow", new Class[] {c_WritableSheet}).invoke(sheet, new Object[] {blank});
    ?

    Vu qu'insertRow est une méthode de la classe WritableSheet (remplacer c_WritableCell par c_WritableSheet dans ta ligne de code)...

    Si ça ne marche pas, donne-nous le message d'erreur (le vrai, celui qui s'affiche, pas une interprétation à l'à peu près...)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  10. #10
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    merci j'essaierai ça lundi et je reviendrai te dire

    sinon l'exception que j'avais c'était : noSuchMthodError insertRow(ce que je passais donc) doesn't exist
    Kyti

  11. #11
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Kyti
    noSuchMthodError insertRow(ce que je passais donc) doesn't exist
    Ah ok, donc il y a de fortes chances que la dernière solution que je t'ai passé fonctionne. Il cherchait la méthode insertRow dans la mauvaise classe...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  12. #12
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    d'accord merci
    Kyti

  13. #13
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    recoucou

    voilà j'ai essayé et ça ne marche toutjours pas avec la ligne que tu m'as donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c_WritableSheet.getMethod("insertRow", new Class[] {c_WritableSheet}).invoke(sheet, new Object[] {blank});
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoSuchMethodException : jxl.write.WritableSheet.insertRow(jxl.write.WritableSheet)
    Kyti

  14. #14
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    j'ai aussi essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c_WritableSheet.getMethod("insertRow", new Class[] {c_Integer}).invoke(sheet, new Object[] {blank});
    et j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoSuchMethodException : jxl.write.WritableSheet.insertRow(java.lang.Integer)
    insertRow prend un int pas un Integer mais je ne sais pas comment lui passer ça
    Kyti

  15. #15
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    bon ben à force de chercher, jai trouvé comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Class types[] = {Integer.TYPE}; 
    Object parametres[] = {new Integer(1)};
    c_WritableSheet.getMethod("insertRow", types).invoke(sheet, parametres);

    y a juste qu'il ne m'insère pas les lignes où je veux mais c'est déjà ça
    Kyti

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/06/2009, 21h28
  2. insérer une ligne vierge dans une requête sql
    Par Noirb dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/07/2008, 14h23
  3. [CR XI] Insérer une ligne ('row') dans le cross-tab
    Par NicolasDeVos dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 26/06/2008, 09h29
  4. [MDX]Insérer une ligne vide dans un dataset
    Par Reskibil dans le forum SSAS
    Réponses: 0
    Dernier message: 11/06/2008, 15h02
  5. Insérer une ligne automatiquement dans une autre tab
    Par davyd dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/03/2005, 17h08

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