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 :

[JExcel] Modifier un fichier généré


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut [JExcel] Modifier un fichier généré
    Bonjour à tous,

    J'ai un petit problème : je n'arrive pas à ré-ouvrir un ficher Excel que j'ai créé avec la class Workbook.
    Si quelqu'un à une astuce ça serai cool.

    Merci d'avance.

    Philippe.

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Un peu de code ? et une petite précision sur l'API que tu utilises ? ...

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Mon problème est qu'une fois que j'ai écris ma cellule dans le workbook et que je le ferme (le fichier xls se crée), mais je n'arrive plus à le retoucher.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    voilà voilà le code.
    DocExcel est une class qui me permet de créer un fichier java. Ça marche.
    Mais je ne sais pas comment modifier un fichier Excel existant après avoir fermé NetBeans. Je pense que mon objet worbook ne survie pas à la fermeture de NetBeans et donc je ne sais pas comment faire le lien entre le fichier Excel visé et Java.
    J'espère que ce code vous permettra de mieux comprendre mon problème.
    Et merci d'avance.
    philippe

    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
     
    import java.io.*;
     
    import jxl.*;
    import jxl.write.*;
    import jxl.write.Number;
    import jxl.write.biff.RowsExceededException;
     
    public class DocExcel
    {
        	public static WritableWorkbook workbook;
    	public static WritableSheet sheet;
     
       	public DocExcel(String mon_programme, String titre)
        	{
                try{
                    workbook = Workbook.createWorkbook(new File(mon_programme+".xls"));
                    sheet = workbook.createSheet("Page 1", 0);
     
                    Label label = new Label(5,0,titre);
     
                    try{
                        sheet.addCell(label);
                        }
                        catch (RowsExceededException e1){e1.printStackTrace();}
                        catch (WriteException e2){e2.printStackTrace();}
                    }
                    catch (IOException e) {e.printStackTrace();}
               }
     
    	public void add_String(int colonne, int ligne, String soustitre)
    	{
                            Label label = new Label(colonne, ligne, soustitre);
                            try{
                                sheet.addCell(label);
                                }
                                catch (RowsExceededException e1){e1.printStackTrace();}
                                catch (WriteException e2){e2.printStackTrace();}
    	}
     
     
            public void add_double(int colonne, int ligne, double data)
    	{
                            Number number = new Number(colonne, ligne, data);
                            try{
                                sheet.addCell(number);
                                }
                                catch (WriteException e2){e2.printStackTrace();}
    	}
     
            public void Ecrire()
            {
                try{
                    workbook.write();
                    workbook.close();
                    }
                    catch (IOException e) {e.printStackTrace();}
                    catch (WriteException e2){e2.printStackTrace();}
            }
     
    }

  5. #5
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Salut,

    Citation Envoyé par philippe13
    voilà voilà le code.
    DocExcel est une class qui me permet de créer un fichier java. Ça marche.
    Ben alors pourquoi tu la mets si ça marche?
    Ce serait plutôt celle qui ne marche pas qu'il faudrait nous coller ici...

    Citation Envoyé par philippe13
    Mais je ne sais pas comment modifier un fichier Excel existant après avoir fermé NetBeans. Je pense que mon objet worbook ne survie pas à la fermeture de NetBeans et donc je ne sais pas comment faire le lien entre le fichier Excel visé et Java.
    Qu'est-ce que Netbeans aurait à voir avec ton application?
    C'est plutôt lorsque tu fermes ton application que l'objet est détruit. Que ce soit dans Netbeans ou pas.

    Citation Envoyé par philippe13
    J'espère que ce code vous permettra de mieux comprendre mon problème.
    Personnellement, non...
    Il faudrait nous mettre le code qui pose réellement problème... c'est-à-dire celui qui va relire ton fichier xls...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    iohack,

    Je m'excuse pour ma maladresse d'expression....

    Tu me dis de mettre du code mais c'est justement ce que je ne sais pas faire : faire un code qui lit un fichier Excel une fois que mon objet workbook a disparu.
    Quand mon objet workbook existe j'utilise les méthodes getcell() et getcontents().
    Si tu as idée je suis preneur.

    J'espère que tout le monde m'a compris ce coup-ci.

  7. #7
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Pour ouvrir un fichier existant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
    Tu as les tutoriaux sur le site de JExcel pour les manipulations de base...
    http://www.andykhan.com/jexcelapi/tutorial.html
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Citation Envoyé par philippe13
    iohack,

    Je m'excuse pour ma maladresse d'expression....

    Tu me dis de mettre du code mais c'est justement ce que je ne sais pas faire : faire un code qui lit un fichier Excel une fois que mon objet workbook a disparu.
    Quand mon objet workbook existe j'utilise les méthodes getcell() et getcontents().
    Si tu as idée je suis preneur.

    J'espère que tout le monde m'a compris ce coup-ci.
    T'inquietes pas ! je t'en veux pas. Lorsque l'on est dans le truc, ça parait évident pour soi, mais l'expliquer aux autres....
    Pour en revenir au sujet, je ne connais pas l'API que tu utilises, je laisse donc les connaisseurs répondre.

  9. #9
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    J'avous que moi aussi j'ai un petit peu du mal à comprendre prcisément ton problème.

    Alors je récapépète ce que je comprends : tu arrives à créer un fichier XLS dans ton logiciel Java, mais ensuite, tu n'arrives pas à le lire depuis Java.

    Première question : Et tu arrives à le lire avec Excel ?
    Deuxième question : En effet, que viens faire NetBeans dans tout ça ?
    Troisièmement : J'utilises POI pour faire ce que tu fais, mais lle concept de base reste le même. Quand tu crées un document Excel, il te faut d'abord créer un workbook, puis créer dans ce workbook un spreadsheet, et enfin remplir le sus-dit spreadsheet. Quand tu veux lire un document excel il te faut ouvrir le workbook, y récupérer le spreadsheet que tu veux, y récupérer le contenu que tu veux, en accédant à chacune de tes cellules de manière aléatoire (getCell(i, j), sans passer par tous les i et tous les j...).

    Donc moi ce que j'aurais tendance à faire dans ton cas, c'est une méthode qui crée mon fichier Excel (avec toutes les étapes ci-dessus) et une autre qui le lit/modifie. Ces 2 méthodes doivent être totalement indépendantes, et gérer elles-mêmes leur propre workbook + spreadsheet.

  10. #10
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Salut,

    Je crois que plegat a répondu à ma question.
    Merci je test ça ce soir.

    Bonne journée à tous.

  11. #11
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Salut à tous,

    J'ai cru que j'en étais sortie, mais pas du tout...
    J'ai regardé attentivement le tutorial que m'a indiqué plegat mais je ne dois passer à coté des info importantes.

    Voici les import que j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import java.io.File; 
    import java.util.Date; 
    import jxl.*;
    Ma méthode qui ne marche pas
    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
     
    public void getArchive(String date)
          {
     
            Workbook workbook = Workbook.getWorkbook(new File(date+".xls"));
            Sheet sheet = workbook.getSheet(0); 
     
     
     
            Cell g5 = sheet.getCell(6,4); 
            Cell g6 = sheet.getCell(6,5); 
            Cell g7 = sheet.getCell(6,6);
            Cell g8 = sheet.getCell(6,7);
            Cell g9 = sheet.getCell(6,8);
            Cell g10 = sheet.getCell(6,9);
     
            NumberCell nc = (NumberCell) g5; 
            archive[0]= (int)(nc.getValue()); 
     
            nc = (NumberCell) g6; 
            archive[1]= (int)(nc.getValue()); 
     
            nc = (NumberCell) g7; 
            archive[2]= (int)(nc.getValue());
     
            nc = (NumberCell) g8; 
            archive[1]= (int)(nc.getValue()); 
     
            nc = (NumberCell) g9; 
            archive[1]= (int)(nc.getValue());
     
            nc = (NumberCell) g10; 
            archive[1]= (int)(nc.getValue());
     
            workbook.close(); 
    }
    Le style n'est pas très élégant....désolé.

    Le compilateur m'indique cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TXTtoXLS.java [372:1] unreported exception java.io.IOException; must be caught or declared to be thrown
    Merci d'avance.

  12. #12
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    le message d'erreur veux dire ca...
    il est possible que tu génères dans certains cas une exception (java.io.IOException)... Il faut donc utiliser un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try{
      //mes méthodes
    }
    catch(java.io.IOException ioe)
    {
    // ce que tu veux faire en cas du soulèvement de cette exception
    System.err.println(ioe); // par exemple
    }

  13. #13
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //nom de ma méthode (public void.....)
    try{ 
      //contenu de ma méthode (Workbook.....)
    } 
    catch(java.io.IOException ioe) { System.err.println(ioe);}
    ça marche pas.
    L'erreur est toujours la même. J'ai pas dû comprndre où il fallait le mettre.

  14. #14
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    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
     
    public void getArchive(String date) 
    try{ 
      Workbook workbook = Workbook.getWorkbook(new File(date+".xls")); 
            Sheet sheet = workbook.getSheet(0); 
     
     
     
            Cell g5 = sheet.getCell(6,4); 
            Cell g6 = sheet.getCell(6,5); 
            Cell g7 = sheet.getCell(6,6); 
            Cell g8 = sheet.getCell(6,7); 
            Cell g9 = sheet.getCell(6,8); 
            Cell g10 = sheet.getCell(6,9); 
     
            NumberCell nc = (NumberCell) g5; 
            archive[0]= (int)(nc.getValue()); 
     
            nc = (NumberCell) g6; 
            archive[1]= (int)(nc.getValue()); 
     
            nc = (NumberCell) g7; 
            archive[2]= (int)(nc.getValue()); 
     
            nc = (NumberCell) g8; 
            archive[1]= (int)(nc.getValue()); 
     
            nc = (NumberCell) g9; 
            archive[1]= (int)(nc.getValue()); 
     
            nc = (NumberCell) g10; 
            archive[1]= (int)(nc.getValue()); 
     
            workbook.close(); 
    } 
    catch(java.io.IOException ioe) { System.err.println(ioe);}
    }
    et comme ca ?
    l'erreur n'a pas changer ?

  15. #15
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Citation Envoyé par anitshka
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.err.println(ioe);
    Tutututut, ne va pas lui filer de mauvaises habitudes!
    Faire plutôt ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ioe.printStackTrace(System.err);
    Ca sera plus détaillé...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  16. #16
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    Tutututut, ne va pas lui filer de mauvaises habitudes!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ioe.printStackTrace();
    ça sera plus simple



    Et je dirais même mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            System.setErr(new PrintStream(new FileOutputStream(new File("./errors.txt"))));
    j'avoue, je n'ai pas du tout testé ce code .... mais dans l'esprit, c'est ça ^^..

  17. #17
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Citation Envoyé par NeptuS
    ça sera plus simple
    raaaaaah je me suis fais eu! C'est la sortie erreur par défaut!
    En plus je ne précise jamais quand je m'en sers...
    A trop vouloir en faire... ou à vouloir en faire trop...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  18. #18
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    Citation Envoyé par NeptuS
    Tutututut, ne va pas lui filer de mauvaises habitudes!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ioe.printStackTrace();
    ca c'est que je voulais mettre a l'origine mais je n'etais pluus sur de la première majuscule (Comme j'ai eu la flemme de chercher) j'ai mi un truc dont j'étais sure
    [edit]mais qu'est devenu notre posteur ??? On lui a fait peur d'un coup ? [/edit]

  19. #19
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    En effet, l'erreur reste la même :

    TXTtoXLS.java [401:1] unreported exception jxl.read.biff.BiffException; must be caught or declared to be thrown
    Workbook workbook = Workbook.getWorkbook(new File(date+".xls"));

    Remarque : il y a un ^ en dessous et juste avant : new File.

    Je sais pas trop quoi faire .....

  20. #20
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    MDR : tu fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Workbook workbook;
    try{
       workbook = Workbook.getWorkbook(new File(date+".xls")); 
    }catch(jxl.read.biff.BiffException biffE){
       System.err.println("Boulet, tu sais pas ouvrir 1 WorkBook !!!");
       biffE.printStackTrace();
       System.exit(1);
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/02/2012, 11h57
  2. [JexcelAPI]Modifier un fichier excel
    Par sissi_l dans le forum Documents
    Réponses: 3
    Dernier message: 01/06/2007, 01h36
  3. [http] Accéder à un fichier généré par un serveur
    Par Seiya dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 27/02/2007, 18h10
  4. [jar] Comment modifier un fichier jar
    Par newfsch dans le forum JBuilder
    Réponses: 5
    Dernier message: 18/07/2004, 14h25
  5. [LG]modifier un fichier
    Par fofovi72 dans le forum Langage
    Réponses: 3
    Dernier message: 15/04/2004, 21h30

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