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.
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.
Un peu de code ? et une petite précision sur l'API que tu utilises ? ...
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.
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();} } }
Salut,
Ben alors pourquoi tu la mets si ça marche?Envoyé par philippe13
Ce serait plutôt celle qui ne marche pas qu'il faudrait nous coller ici...
Qu'est-ce que Netbeans aurait à voir avec ton application?Envoyé par philippe13
C'est plutôt lorsque tu fermes ton application que l'objet est détruit. Que ce soit dans Netbeans ou pas.
Personnellement, non...Envoyé par philippe13
Il faudrait nous mettre le code qui pose réellement problème... c'est-à-dire celui qui va relire ton fichier xls...
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.
Pour ouvrir un fichier existant:
Tu as les tutoriaux sur le site de JExcel pour les manipulations de base...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
http://www.andykhan.com/jexcelapi/tutorial.html
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....Envoyé par philippe13
Pour en revenir au sujet, je ne connais pas l'API que tu utilises, je laisse donc les connaisseurs répondre.
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.
Salut,
Je crois que plegat a répondu à ma question.
Merci je test ça ce soir.
Bonne journée à tous.![]()
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
Ma méthode qui ne marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 import java.io.File; import java.util.Date; import jxl.*;
Le style n'est pas très élégant....désolé.
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 compilateur m'indique cette erreur :
Merci d'avance.
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
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 }
J'ai fait :
ça marche pas.
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);}
L'erreur est toujours la même. J'ai pas dû comprndre où il fallait le mettre.
et comme ca ?
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);} }
l'erreur n'a pas changer ?
Tutututut, ne va pas lui filer de mauvaises habitudes!Envoyé par anitshka
Faire plutôt ça:
Ca sera plus détaillé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part ioe.printStackTrace(System.err);
Tutututut, ne va pas lui filer de mauvaises habitudes!
ça sera plus simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ioe.printStackTrace();
Et je dirais même mieux :
j'avoue, je n'ai pas du tout testé ce code .... mais dans l'esprit, c'est ça ^^..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.setErr(new PrintStream(new FileOutputStream(new File("./errors.txt"))));
raaaaaah je me suis fais eu! C'est la sortie erreur par défaut!Envoyé par NeptuS
En plus je ne précise jamais quand je m'en sers...
A trop vouloir en faire... ou à vouloir en faire trop...
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 sureEnvoyé par NeptuS
[edit]mais qu'est devenu notre posteur ??? On lui a fait peur d'un coup ?[/edit]
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 .....
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); }
Partager