J'utilise Apache POI API
pour générer excel spreadsheet
pour générer des données.
Le problème auquel je suis confronté est que lorsque la feuille de calcul est créée et ouverte, les colonnes ne sont pas développées de sorte qu'un texte long comme le texte au format Date ne s'affiche pas au premier coup d'œil.
Je pourrais simplement double-cliquer sur la bordure de colonne dans Excel pour développer ou faire glisser la bordure pour ajuster la largeur de la colonne, mais il pourrait y avoir plus de 20 colonnes et il n'y a aucun moyen que je veuille le faire manuellement chaque fois que j'ouvre la feuille de calcul :(
J'ai découvert (bien que cela puisse être une mauvaise méthode) groupRow()
et je setColumnGroupCollapsed()
pourrais peut-être faire l'affaire, mais pas de chance. Peut-être que je l'utilise mal.
Extrait de code d'exemple
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 «Looooooong text to not show up first» se trouve dans la cellule, mais comme la colonne n'est pas développée, seul «Loooooooo» apparaît.
Comment puis-je le configurer pour que lorsque j'ouvre ma feuille de calcul, la colonne soit déjà développée ???
la source
Réponses:
Après avoir ajouté toutes vos données à la feuille, vous pouvez appeler
autoSizeColumn(int column)
votre feuille pour ajuster automatiquement les colonnes à la taille appropriéeVoici un lien vers l' API .
Voir cet article pour plus de références Problème d'ajustement de la taille de cellule Excel à la taille du contenu lors de l'utilisation d'apache poi
la source
autoSizeColumn
cela ne s'adapte pas bien et sera très lent si vous avez beaucoup de lignes. J'ai dû faire un peu de piratage et faire quelque chose de similaire à ce qui était suggéré dans cette question .Conseil: pour que la taille automatique fonctionne, l'appel à
sheet.autoSizeColumn(columnNumber)
doit être effectué après le remplissage des données dans Excel.L'appel de la méthode avant de remplir les données n'aura aucun effet.
la source
(5 until row.lastCellNum).forEach { colNum -> val columnWidth = (row.getCell(colNum).toString().length * 0.44 + 2.24) * 768 reportSheet.setColumnWidth(colNum, columnWidth.toInt()) }
Si vous souhaitez dimensionner automatiquement toutes les colonnes d'un classeur, voici une méthode qui pourrait être utile:
la source
NullPointerException
àrow.cellIterator()
. Est-ce parce que je n'ai aucune valeur dans l'une des cellules?Vous pouvez essayer quelque chose comme ceci:
Ici les paramètres sont: le numéro de colonne dans la feuille et sa largeur Mais, les unités de largeur sont assez petites, vous pouvez essayer 4000 par exemple.
la source
Pour Excel POI:
la source
exemple de code ci-dessous
// c'est crucial
// l'argument doit être un numéro de cellule
Vérifiez la sortie et devenez fou :)
la source
Si vous connaissez le nombre de vos colonnes (par exemple, il est égal à une liste de collection). Vous pouvez simplement utiliser cette seule ligne pour ajuster toutes les colonnes d'une feuille (si vous utilisez au moins java 8):
la source
J'utilise ci-dessous une solution simple:
Voici votre classeur et votre feuille:
puis ajoutez des données à votre feuille avec des colonnes et des lignes. Une fois terminé, ajoutez des données à la feuille, écrivez le code suivant sur la
autoSizeColumn
largeur.Ici, au lieu de 15, vous ajoutez le nombre de colonnes dans votre feuille.
J'espère que quelqu'un aide ça.
la source
C'est très simple, utilisez ce code d'une ligne dataSheet.autoSizeColumn (0)
ou indiquez le nombre de colonnes entre parenthèses dataSheet.autoSizeColumn (numéro de cellule)
la source
Vous pouvez également envelopper le texte. Exemple de code PFB:
la source
Vous pouvez utiliser
setColumnWidth()
si vous souhaitez développer davantage votre cellule.la source