J'aimerais copier les données de 3 fichiers excel, dans un seul fichier csv.
Comment faire cela en java?
Merci d'avance
 
			
			






 
			
			
			
			 
			
				
 Ecrire un fichiers CSV à partir de 3 fichiers Excel
 Ecrire un fichiers CSV à partir de 3 fichiers Excel
				
				
						
						
				J'aimerais copier les données de 3 fichiers excel, dans un seul fichier csv.
Comment faire cela en java?
Merci d'avance
 
 
				
				
						
						
				Deja lire les fichiers Excel
Apache Jakarta POI peut faire ca.
Ecrire le cvs qui n'est qu'un fichier texte séparé par des virgules ...
d'ou le nomComma Separated Value

 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Merci pour ta réponse, mais étant débutant je n'ai pas très bien compris comment faire. Je suis allé sur le site de jakarta, j'ai lu la doc sur POI, mais je t'avoue que je trouve ça un peu difficile.
Tu n'aurais pas un exemple à me donner, pour m'inspirer de ton code.
Merci
 
 
				
				
						
						
				Héhé, j'avoue que je n'ai pas codé un tel projet
Pour Excel l'extension correspondante est HSSF
Regarde la doc correspondant à ce morceau.
Avec Jakarta tu auras de quoi lire un fichier XLS, retrouver les données dans tes cellules, et tout ca ...
Ensuite en Java il suffit de te faire une ptite structure qui correspondent à ce que tu veux faire, genre des tableaux de chaines pour stocker venant des différents fichier excel.
Puis la génération des fichiers elle se fait avec les classes de Writer, sur le site developpez.com y aura certainement de quoi faire ton bonheur la dessus.
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				OK, merci. Je vais essayer ça. Et je te tiens au courant ou t'appelle au secours
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Je viens d'essayer de comprendre mais c'est pas evident POI.
Je dois copier des colonnes de ma source pour les ecrire vers le fichiers destination, mais je ne sais pas comment faire.
je n'y arrive pas.
Aidez moi s'il vous plait.
 
 
				
				
						
						
				Déjà je pense que tu devrais travailler en mémoire avant de vouloir écrire le fichier.
Avec ca tu devrais avoir l'essentiel des méthodes dont tu as besoin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("workbook.xls")); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); HSSFRow row = sheet.getRow(2); HSSFCell cell = row.getCell((short)3);
Le POIFSFileSystem correspond à ton fichier XLS.
Workbook c'est la représentation du classeur excel.
Sheet correspond à chacune des feuilles.
Row c'est les colonnes.
Cell les cellules.
Tes données tu peux les récup avec une série de boucles ...
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				OK, je commence à avoir un semblant de code, mais ça marche pas terrible, surtout quand y a des cellules vides sans rien.
Je seche là. Y a t-il un expert Java-POI qui pourrait etre charitable, et me donner un coup de pouce.
Merci d'avance
 
 
				
				
						
						
				poste ton "semblant de code qui ne marche pas terrible "
 
 
				
				
						
						
				+1
Et de plus, ca veut dire quoi "ca marche pas terrible ?"
Il te saute des cellules ?
Il ne récupère pas les bonnes valeurs ?
Il n'ouvre pas ton fichier ?
Plus tu seras précis plus on pourra t'aider.
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				En fait dans mon fichier excel, il y a certaines cellules qui sont vides, et pour ces cellules mon code ne fonctionne pas, il recupere aucune cellule de la colonne considérée.
Du coup j'aimerais faire une copie d'un ensemble de cellules pour les coller dans un nouveau fichier mais je ne sais pas comment faire ou si une telle action est possible avec POI.
Comment faire?
 
 
				
				
						
						
				Mais je comprends pas ... Y te refuse l'accès à une colonne, parce que certains éléments sont vides ... Ca parait bizarre ...
Y a pas un getColonne ou un truc dans le style ?
Copier un ensemble de cellule c'est possible, avec une boucle de getCell a priori ...
La si tu n'es pas plus précis et sans envoyer de code, on pourra difficilement faire quelque chose ...
Tout ceci reste très vague
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Mon soucis est effectivement de copier toutes les données d'un fichier excel vers un fichier csv avec comme separateur le point virgule.
Comment faut il faire?
Je sais qu'il faut un PrintWriter, mais que faut-il d'autres? Est ce quelqu'un aurait un exemple de code?
Merci.
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Voici mon code, pour ecrire d'un fichier excel vers un fichier texte(csv).
Voilà le code, mais ça ne marche. J'ai un java.lang.NullPointerException.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
44String sFile = sFile = "mon_excel.xls"; String repertoire = "C:\\excel\\"; String inFilename = repertoire + sFile ; String outFilename = repertoire + "Essai.csv"; POIFSFileSystem fs = null; FileOutputStream file = null; FileOutputStream fileOut = null; HSSFWorkbook workbook = null; HSSFSheet sheet = null; HSSFCell cel = null; String value = null; PrintWriter oot = null; StringBuffer buf = null; fs = new POIFSFileSystem(new FileInputStream(new File(inFilename))); workbook = new HSSFWorkbook(fs); sheet = workbook.getSheetAt(0); fs = new POIFSFileSystem(new FileInputStream(new File(inFilename))); fileOut = new FileOutputStream(new File(outFilename)); oot = new PrintWriter(fileOut); buf = new StringBuffer(); workbook = new HSSFWorkbook(); int nbRow = sheet.getPhysicalNumberOfRows(); for(int i = 0 ; i < nbRow ; i++) { HSSFRow row = sheet.getRow(i); buf.setLength(0); // 100 cellules for(short j = (short) 0 ; j <= (short) 100 ; j++) { buf.append( null == row.getCell(j).getStringCellValue().toString() ? "" : row.getCell(j).getStringCellValue().toString()); if(j != 100) { buf.append(";"); } } buf.append("\n"); oot.println(buf.toString()); } oot.flush(); oot.close(); fileOut.close();
Merci de m'aider
 
 
				
				
						
						
				Sans rien connaitre à POI, je dirais que les causes possibles d'un NullPointerException sont
- row.getCell(j) est null, ou
- row.getCell(j).getStringCellValue() est null.
 
 
				
				
						
						
				Un NullPointer ca se detecte relativement facilement ...
T'as essayé de débugguer ton code, tu sais où il apparait le null ?
T'as fait des prints, t'as essayé des exécutions pas à pas ?
Un pti tour vers les cours / tutoriels de débug ne seraient pas de trop non plus à priori ...
 
 
				
				
						
						
				+1
pour pk960, en ce qui concerne les causes probables du NullPointerException.
de plus quel est l'intérêt de répéter deux fois cette ligne :
Il doit s'agir à mon avis d'un copier coller malheureux. Et il est préférable d'enlever la deuxième occurrence qui n'apporte rien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part fs = new POIFSFileSystem(new FileInputStream(new File(inFilename)));
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				OK, merci à tout le monde. En fait, je dois faire un controle sur le type de la cellule en cours(string, numeric, formula, blank).
Je fais des tests sur un fichier excel et ça marche.
Par contre pour dans un fichier csv, avec plusieurs fichiers excel en entrée, j'ai encore des soucis. Est ce que je dois utiliser une HashMap pour stocker mes 3 fichiers excel?
Voici le code que j'ai crée :
Mais ça ne m'ecrit aucun fichier csv. Pourriez vous m'aider?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Merci d'avance
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				a une erreur dans mon code, ce n'est pas pFiles mais files pour la hash Map.
Mauvais code :
bon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
A priori, ça m'ecrit le fichier texte; je pense etre sur la bonne voie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
Merci
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				ça ne marche pas, ça m'execute une boucle infinie, en parsant les cellules vides dans mon fichier excel, c'est bizarre. Du coup ça plante mon serveur. Je n'arrive pas à voir comment faire pour eviter ça. Comment faire?
Partager