2 pièce(s) jointe(s)
Ecrire dans une cellule Excel
Bonjour,
Je travaille sur un petit code qui me retravaille un fichier Excel, j'ai des valeurs sur plusieurs colonnes comme ceci :
Pièce jointe 386101
et je souhaite faire pivoter les colonnes (2 à max) en ligne :
Pièce jointe 386115
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:
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