2017-01-30 12 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の後に特定の値を追加して問題を修正しました。 \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は、1つの文字のサイズを表しています。

これは完璧ではありませんが、ほとんどの場合私のために機能します。