2017-08-31 1 views
1

J'utilise le poi libary dans java pour mon application pour mettre des chaînes dans un fichier Excel. La chose est que certaines de mes chaînes contiennent plusieurs lignes et lorsqu'elles sont placées dans une cellule, seules certaines informations sont visibles comme sur la troisième colonne. http://imgur.com/Iy7B2OY Je suis obligé de double-cliquer sur la cellule pour voir les informations telles qu'elles devraient être présentées. Y a-t-il une méthode que je peux utiliser pour que les informations soient comme la dernière ligne de la troisième colonne? Merci d'avance. Modifier: voici le code de la classe qui effectue le travail de conversion.Comment redimensionner automatiquement la hauteur des lignes en utilisant poi java?

conversion public class {

String filename = "C:\\Users\\daoudi\\Desktop\\FactureTest.xls" ; 
HSSFWorkbook workbook = new HSSFWorkbook(); 
HSSFSheet sheet = workbook.createSheet("FirstSheet"); 
HSSFRow rowhead = sheet.createRow(0); 


public conversion(List<String> nom , List<String> tel, List<String> abo, List<String> total) throws IOException{ 
    try{ 
     rowhead.createCell(0).setCellValue("Nom"); 
     rowhead.createCell(1).setCellValue("Telephone"); 
     rowhead.createCell(2).setCellValue("Abonnements"); 
     rowhead.createCell(3).setCellValue("Total"); 
    //HSSFCellStyle aligned = workbook.createCellStyle(); 
    //aligned.setAlignment(HSSFCellStyle.VERTICAL_JUSTIFY); 


     for (int i=0;i<nom.size();i++){ 
     HSSFRow row = sheet.createRow(i+1); 
     Cell cell = row.createCell(0); 
     cell.setCellValue(nom.get(i)); 
      cell = row.createCell(1); 
      cell.setCellValue(tel.get(i)); 
      cell = row.createCell(2); 
      cell.setCellValue(abo.get(i)); 
      //cell.setCellStyle(aligned); 
      cell = row.createCell(3); 
      cell.setCellValue(total.get(i)); 
      //cell.setCellStyle(aligned); 

    } 

     sheet.autoSizeColumn((short)0); 
     sheet.autoSizeColumn((short)1); 
     sheet.autoSizeColumn((short)2); 
     sheet.autoSizeColumn((short)3); 
    FileOutputStream fileOut = new FileOutputStream(filename); 
    workbook.write(fileOut); 
    fileOut.close(); 

    } catch(IOException e) { 
     e.printStackTrace(); 
    } 

} 

}

+2

Ajoutez votre code en question. – Nikolay

+0

Avez-vous essayé quelque chose comme ça? sheet.autoSizeColumn (1); –

+0

mettre sheet.autoSizeColumn .. avant de mettre des données dans les cellules – Frank

Répondre

0

Ci-dessous un exemple de code de travail

try { 
     FileInputStream is = new FileInputStream(new File("C:\\Desktop\\ook.xls")); 
     HSSFWorkbook wb = new HSSFWorkbook(is); 
     String str = "111111111111111111111111111111111111111111111111111111111111111111111111111111111"; 
     HSSFSheet sheet = wb.getSheet("Sheet1"); 

     Row row = sheet.createRow(0); 
     Cell cell = row.createCell(0); 
     Cell cell1 = row.createCell(1); 

      CellStyle style = wb.createCellStyle(); 

      cell.setCellStyle(style); 
      cell.setCellValue(str); 

      CellStyle style2 = wb.createCellStyle(); 
      cell1.setCellStyle(style2); 
      cell1.setCellValue(str); 

      sheet.autoSizeColumn(0); 
      sheet.autoSizeColumn(1); 

     wb.write(new FileOutputStream(new File("C:\\Desktop\\ook.xls"))); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

j'écris "str" ​​dans les deux premières colonnes à la première rangée.

Les bibliothèques im utilisant sont:

enter image description here

Résultat:

enter image description here

En outre, il y a même autowrap vous pouvez utiliser, un exemple ci-dessous:

try { 
      FileInputStream is = new FileInputStream(new File("C:\\Desktop\\ook.xls")); 
      HSSFWorkbook wb = new HSSFWorkbook(is); 
      String str = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"; 
      HSSFSheet sheet = wb.getSheet("Sheet1"); 

      Row row = sheet.createRow(0); 
      Cell cell = row.createCell(0); 

       CellStyle style = wb.createCellStyle(); 
       style.setWrapText(true); 
       cell.setCellStyle(style); 
       cell.setCellValue(str); 

      wb.write(new FileOutputStream(new File("C:\\Desktop\\ook.xls"))); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

Résultat:

enter image description here

+0

Votre code fonctionne en effet avec de très longues chaînes sur une ligne, mais le fait est que mes données sont stockées sur plusieurs lignes, et ce code produit un résultat très bizarre comme vous pouvez le voir: http: // imgur. com/a/kmAAx –

+0

Je viens de voir votre edit, le setWrapText a fait le travail. Merci beaucoup! –