Bonjour,

Je travaille sur un petit code qui me retravaille un fichier Excel, j'ai des valeurs sur plusieurs colonnes comme ceci :

Nom : Java_etl_1.JPG
Affichages : 452
Taille : 22,0 Ko

et je souhaite faire pivoter les colonnes (2 à max) en ligne :

Nom : Java_etl_2.JPG
Affichages : 468
Taille : 13,9 Ko

Donc j'ai fait ce petit bout de code (qui ne gère pas encore les valeurs à null mais je verrais plus tard). J'arrive à créer une sortie au format CSV, mais au je n'arrive pas à écrire également au format Excel, erreur à la ligne 56 du code. La méthode setCellValue ne veut pas argument objet.

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
62
63
64
65
66
67
68
 
    	 FileInputStream fileExcel = new FileInputStream("C:\\temp\\test.xlsx") ;        
 
         XSSFWorkbook inFile = new XSSFWorkbook(fileExcel) ;            
         XSSFWorkbook outFile = new XSSFWorkbook();
 
         XSSFSheet feuille1 = outFile.createSheet("SortieXls");       
         XSSFSheet feuille = inFile.getSheetAt(0);  
 
         XSSFRow ligneExcel ;        
         XSSFCell celluleExcel;
 
         String ligneFinal ="" ;
 
         ArrayList tabFinale = new ArrayList() ;
 
         int nbLigne = feuille.getLastRowNum();
         int nbColonneFinal;
 
         for(int i = 1 ; i < nbLigne ; i++ ) // debut de lecture des lignes
         {
         String ligneDebut = "" ;
         ligneExcel = feuille.getRow(i) ;
         nbColonneFinal= ligneExcel.getLastCellNum();
 
         ArrayList garantie = new ArrayList() ;				// déclaration de la liste pour ontenir les valeurs des GT
         for (int k = 2 ;  k < nbColonneFinal ; k++)		// intégration des valeurs colonne 2 à max dans une liste "garantie"
	        {        	
	               garantie.add(ligneExcel.getCell(k).toString()+"\t") ;	              	        	                        
	        }
 
 
 	        for (int j = 0 ;  j < 2 ; j++)		// récupération valeurs des deux premires colonnes 
 	        {        	
 	               ligneDebut += ligneExcel.getCell(j).toString()+"\t" ;                            	        	                        
 	        }
 
 	        for (int l = 0 ; l < garantie.size() ; l++) // lecture de la liste est intégration dans le String ligneFinal
 	        {
 	        	ligneFinal += ligneDebut + garantie.get(l) ;
 	        	ligneFinal += "\n";
 	        	tabFinale.add(ligneFinal);
 	        }
 
 
         }   
 
         int nbLigneTableau = tabFinale.size() ;      
 
         ArrayList<XSSFRow> ligneExcelOut = new ArrayList() ;  // création des lignes dans Excel de sortie
 
	      for ( int i = 0 ; i < nbLigneTableau ; i++)  // création des lignes suivnat la taille de l'arrayList
	      {
	    	 ligneExcelOut.add(feuille1.createRow((short)i)); 
	    	 XSSFCell cellule = ligneExcelOut.get(i).createCell(0);	    	  
	    	 cellule.setCellValue(tabFinale.get(i));  // intégration dans les lignes des valeurs recupérées de l'arraylist "tabFinale" => Error
 
	      }
 
         FileOutputStream outXls = new FileOutputStream("c:\\temp\\sortie.xlsx");  // sortie excel
         FileWriter outCsv = new FileWriter("c:\\temp\\sortie.csv") ;     			// sortie csv
 
         outFile.write(outXls);
         outFile.close();
         outCsv.write(ligneFinal);
         outCsv.close();
 
         System.out.println("Nb ligne Max : " + nbLigne + " et taille du tableau  :" + nbLigneTableau);
Si quelqu'un à une idée

++Pièce jointe 386103

Manu