2017-01-30 34 views
0

對於我的項目,使用java和POI lib創建一個excel文件。 我有幾張紙和很多不同的信息。對於少數我可以使用模板,只需插入數據。Java POI autosize columun

但是對於其他一些數據,我不知道我將得到的信息的長度。

我需要將Excel呈現舒服,所以我用不同的風格,我的問題是自動調整大小:

/** 
* 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後面添加一個特定值來糾正了這個問題:onglet.autoSizeColumn(i,true); \t onglet.setColumnWidth(i,onglet.getColumnWidth(i)+ 3 * 256); –

回答

0

對於那些有興趣,我通過自動調整大小後增加一個特定值修正了該問題:

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

256代表一個字符的大小。

這並不完美,但它適用於大多數情況下對我來說。