2017-01-30 3 views
0

Для моего проекта, с java и POI lib, я создаю файл excel. У меня есть несколько листов и много другой информации. Для нескольких я могу использовать шаблон и просто вставлять данные.Java POI autosize columun

Но для некоторых других данных я не знаю длины информации, которую я собираюсь получить.

мне нужно первенствовать представить хорошо, поэтому я использую различные стили, моя проблема с Авторазмером:

/** 
* Remplit les cellules d'un onglet 
* @param nomOnglet Le nom de l'onglet à remplir 
* @param cellules Les valeurs à insérer dans l'onglet 
* @throws TechniqueException 
*/ 
private void remplirOnglet(HSSFWorkbook classeur, String nomOnglet, List<CelluleExport> cellules) throws TechniqueException { 
    HSSFSheet onglet = classeur.getSheet(nomOnglet); 
    if(onglet == null) 
     onglet = classeur.createSheet(nomOnglet); 
    int colMax = 0; 
    for (CelluleExport cellule : cellules) { 
     int idLigne = cellule.getRow()-1; 
     int idColonne = cellule.getColumn()-1; 
     colMax = Math.max(colMax, idColonne); 
     HSSFRow ligne = onglet.getRow(idLigne); 
     if(ligne == null) 
      ligne = onglet.createRow(idLigne); 
     HSSFCell poiCell = ligne.getCell(idColonne); 
     if(poiCell == null) 
      poiCell = ligne.createCell(idColonne); 
     poiCell.setCellType(HSSFCell.CELL_TYPE_STRING); 
     poiCell.setCellValue(cellule.getValeur()); 
     if(cellule.isStyled()) { 
      applyStyle(cellule, poiCell); 
      if(cellule.getStyleType().equals(CelluleExport.CELL_STYLE_TYPE.TITRE_BLOC)) 
       fusionnerDroite(onglet, cellule, 2); 
     } 
    } 
    for(int i=0; i <= colMax; i++){ 
     onglet.autoSizeColumn(i, true); 
    } 
} 

Auosize работает отлично, большая часть времени. Для нескольких ячеек, с жирным шрифтом или большим шрифтом, он не работает.

Кто-нибудь знает способ избежать этой проблемы? Я ничего не нашел в Интернете, и я думаю, что это проблема с lib.

+0

Это проблема lib или проблема excel. У меня тоже есть эта проблема, и я не нашел решения. – IQV

+0

Для тех, кого это интересует, я исправил проблему, добавив определенное значение после autoSize: \t onglet.autoSizeColumn (i, true); \t onglet.setColumnWidth (i, onglet.getColumnWidth (i) + 3 * 256); –

ответ

0

Для тех, кто заинтересован, я исправил проблему путем добавления определенного значения после Autosize:

onglet.autoSizeColumn(i, true); 
onglet.setColumnWidth(i, onglet.getColumnWidth(i) + 3*256); 

256 представляют размер одного символа.

Это не идеальный вариант, но для большинства случаев он работает.