Apache POI Excel-comment configurer les colonnes à étendre?

j'utilise Apache POI API pour générer excel spreadsheet pour produire certaines données.

le problème auquel je fais face est lorsque le tableur est créé et ouvert, les colonnes ne sont pas élargies de sorte qu'un long texte comme le texte date formaté n'apparaît pas à première vue.

je pourrais simplement double-cliquer la bordure de la colonne dans excel pour étendre ou faire glisser la bordure pour ajuster la largeur de la colonne mais il pourrait y avoir 20 + colonnes et il n'y a aucun moyen que je veux faire que manuellement chaque fois que j'ouvre la feuille de calcul: (

j'ai découvert (bien que pourrait être la mauvaise méthode) groupRow() et setColumnGroupCollapsed() pourrait être en mesure de faire le tour, mais pas de chance. Peut-être que je l'utilise dans le mauvais sens.

exemple de Code snippet

        Workbook wb = new HSSFWorkbook();
        CreationHelper createHelper = wb.getCreationHelper();
        //create sheet
        Sheet sheet = wb.createSheet("masatoSheet");

        //not really working yet.... :(
        //set group for expand/collapse
        //sheet.groupRow(0, 10); //just random fromRow toRow argument values...
        //sheet.setColumnGroupCollapsed(0, true);

        //create row
        Row row = sheet.createRow((short)0);
        //put a cell in the row and store long text data
        row.createCell(0).setCellValue("Loooooooong text not to show up first");

lorsque cette feuille de calcul est créée, la chaîne de caractères" Loooooooong text not to show up first " est dans la cellule mais puisque la colonne n'est pas étendue seulement "Loooooooo" s'affiche.

Comment puis-je le configurer pour que lorsque j'ouvre ma feuille de calcul, La colonne soit déjà étendue???

75
demandé sur masato-san 2011-01-06 04:36:17

9 réponses

Après vous avez ajouté toutes vos données à la feuille, vous pouvez appeler autoSizeColumn(int column) sur votre feuille d'ajuster les colonnes à la bonne taille

voici un lien vers API .

voir ce billet pour plus de référence problème d'ajustement de la taille de la cellule excel à la taille du contenu lors de l'utilisation d'apache poi

139
répondu Sean 2017-09-23 19:38:32

Conseil: pour faire fonctionner la taille automatique , l'appel à sheet.autoSizeColumn(columnNumber) devrait être fait après peuplant les données dans l'excel.

appeler la méthode avant de remplir les données, n'aura aucun effet.

38
répondu Unni Kris 2013-07-17 14:25:02

si vous voulez faire la taille automatique de toutes les colonnes dans un classeur, voici une méthode qui pourrait être utile:

public void autoSizeColumns(Workbook workbook) {
    int numberOfSheets = workbook.getNumberOfSheets();
    for (int i = 0; i < numberOfSheets; i++) {
        Sheet sheet = workbook.getSheetAt(i);
        if (sheet.getPhysicalNumberOfRows() > 0) {
            Row row = sheet.getRow(0);
            Iterator<Cell> cellIterator = row.cellIterator();
            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                int columnIndex = cell.getColumnIndex();
                sheet.autoSizeColumn(columnIndex);
            }
        }
    }
}
21
répondu Ondrej Kvasnovsky 2016-02-10 19:56:33

pour Excel POI:

sheetName.autoSizeColumn(cellnum); 
8
répondu Adnan Ghaffar 2014-04-01 21:50:18

Vous pouvez essayer quelque chose comme ceci:

HSSFSheet summarySheet = wb.createSheet();
summarySheet.setColumnWidth(short column, short width);

ici les paramètres sont: numéro de colonne en feuille et sa largeur Mais, les unités de largeur sont assez petites, vous pouvez essayer 4000 par exemple.

6
répondu UVM 2017-07-18 03:16:10

exemple de code ci-dessous

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("your sheet name");
HSSFRow row = sheet.createRow(0);

cell = row.createCell(0);
cell.setCellValue("A BIG NAME WITH AUTO SIZE FEATURE ENABLED");

//c'est crucial

sheet.autoSizeColumn(0);

//argument doit être le nombre de cellules

cell = row.createCell(1);
cell.setCellValue("a big name without auto size feature enabled");

vérifier la sortie et aller noix :)

4
répondu Mateen 2014-09-23 10:22:38

si vous connaissez le nombre de vos colonnes (F. E. c'est l'équivalent d'une liste de collecte). Vous pouvez simplement utiliser ce liner pour ajuster toutes les colonnes d'une feuille (si vous utilisez au moins java 8):

IntStream.range(0, columnCount).forEach((columnIndex) -> sheet.autoSizeColumn(columnIndex));
1
répondu snap 2017-12-13 15:08:52

c'est très simple, utilisez cette ligne de code feuille de données.autoSizeColumn (0)

ou indiquer le nombre de colonnes entre parenthèses feuille de données.autoSizeColumn (numéro de cellule )

0
répondu Muhammad Faisal Shahzad 2017-11-24 11:43:19

Vous pouvez utiliser setColumnWidth() si vous voulez élargir votre cellule plus.

-1
répondu Francis Gabriel Rodriguez 2016-10-06 16:12:20