150 votes

Largeur automatique des colonnes dans EPPlus

Comment faire en sorte que les colonnes soient de largeur automatique lorsque les textes dans les colonnes sont longs ?

J'utilise ce code

 Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
 Worksheet.cells.AutoFitColumns()
 Worksheet.Column(colIndex).BestFit = True  'on all columns'

Aucune de ces méthodes ne fonctionne

Existe-t-il des moyens de le faire fonctionner ?

Note : Certains de mes textes utilisent Unicode.

275voto

Tim Schmelter Points 163781

Utilisez AutoFitColumns mais vous devez spécifier les cellules, je suppose la feuille de calcul entière :

VB.NET

Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()

C#

Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();

Veuillez noter que vous devez appeler cette méthode après avoir rempli la feuille de calcul.

44voto

Daniele Armanasco Points 1686

J'ai utilisé ce code avec la version 3.1.3.0 de EPPlus et cela fonctionne :

worksheet.Column(1).AutoFit();

où une feuille de calcul est la variable faisant référence à la feuille de calcul que j'ai créée dans mon code (pas une classe avec une méthode statique !).

Il est évident que vous devez appelez cette méthode après avoir rempli les colonnes .

21voto

johnny 5 Points 6628

Je voulais juste souligner que vous pouvez adapter les cellules sans spécifier la plage, assurez-vous simplement d'appeler cette fonction après avoir formaté toutes les colonnes, etc :

worksheet.Cells.AutoFitColumns()

16voto

TrailTrackers Points 161

Je sais que c'est une vieille question, mais j'utilise le code ci-dessous et il semble répondre directement à ce que vous avez essayé de faire.

using (var xls = new ExcelPackage())
{
    var ws = xls.Workbook.Worksheets.Add("Some Name");

    //**Add Column Names to worksheet!**
    //**Add data to worksheet!**

    const double minWidth = 0.00;
    const double maxWidth = 50.00;

    ws.Cells.AutoFitColumns(minWidth, maxWidth);

    return pkg.GetAsByteArray();
}

12voto

Jose Points 1362

Je sais que c'est un peu tard mais j'ai eu le même problème aujourd'hui. Si vous avez un worksheet.DefaultColWidth défini, ça ne marchera pas. J'ai supprimé cette ligne et ajouté Worksheet.cells.AutoFitColumns(); et ça marche maintenant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X