Bonjour,
Je travaille sur un petit code qui me retravaille un fichier Excel, j'ai des valeurs sur plusieurs colonnes comme ceci :
et je souhaite faire pivoter les colonnes (2 à max) en ligne :
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.
Si quelqu'un à une idée
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);
++Pièce jointe 386103
Manu
Partager