Apache POI autoSizeColumn redimensionne la largeur minimum
Lorsque l'on travaille avec des valeurs qui sont des formules, je vais avoir de la difficulté à obtenir les colonnes de autoresize correctement.
J'ai "résolu" en faisant un caché ligne qui a des valeurs maximales que les constantes de chaînes de valeurs, mais qui est loin d'être élégant et nécessite souvent l'évaluation de l'formules dans chaque cellule pour obtenir le plus grand des chaînes de caractères qui sont générés. Alors que ce genre de travaux pour une petite feuille de calcul, il devient très peu pratique pour les feuilles qui sont ~16 colonnes x ~6000 lignes.
Le code suivant rend comme dans OpenOffice.
package com.shagie.poipoc;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
public class SimpleBug {
public static void main(String[] args) {
try {
Workbook wb = new HSSFWorkbook();
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
Sheet sheet = wb.createSheet("new sheet");
Row row = sheet.createRow(0);
CellStyle style = wb.createCellStyle();
style.setDataFormat(wb.createDataFormat().getFormat("[h]:mm"));
Cell cell = row.createCell(0);
cell.setCellValue(123.12);
cell.setCellStyle(style);
row.createCell(1).setCellFormula("A1");
row.createCell(2)
.setCellFormula("TRUNC(A1) & \"d \" & TRUNC(24 * MOD(A1,1))" +
" & \"h \" & TRUNC(MOD(60 * 24 * MOD(A1,1),60)) & \"m\"");
row.createCell(3).setCellValue("foo");
for(int i = 0; i < 4; i++) {
sheet.autoSizeColumn(i);
}
wb.write(fileOut);
fileOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Liées, et essayé:
Apache POI autoSizeColumn Redimensionne de manière Incorrecte J'ai essayé de la police dans le style. J'ai une liste de toutes les polices de Java, a été conscients de
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
for(String font:e.getAvailableFontFamilyNames()) {
System.out.println(font);
}
J'ai essayé plusieurs polices répertoriées avec cette boucle, et alors que OpenOffice changé la police, les colonnes, où encore de taille incorrecte.
OriginalL'auteur | 2014-01-04
Vous devez vous connecter pour publier un commentaire.
En supposant que vous êtes à la recherche de la taille correcte de la colonne en fonction de la formule de résultats, il suffit d'insérer la ligne suivante avant vous ne le
autoSizeColumn
, dans ce cas avant votrefor
boucle:La raison en est
autoSizeColumn
tailles votre cellulaire basé sur la mise en cache de la formule évalué les résultats et si la formule n'a jamais été évalué, il ne serait pas savoir quelle taille pour définir.Code:
De sortie (OpenOffice)
OriginalL'auteur PopoFibo