web-dev-qa-db-fra.com

Largeur de colonne automatique dans EPPlus

Comment faire pour que les colonnes aient une 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

Y a-t-il des moyens de le faire fonctionner?

Remarque: Certains de mes textes utilisent Unicode.

121
Pengan

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

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.

223
Tim Schmelter

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

worksheet.Column(1).AutoFit();

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

Évidemment, vous devez appelez cette méthode après avoir rempli les colonnes.

38

Je sais que c’est une vieille question, mais j’utilise le code ci-dessous et il semble adresser 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();
}
15
TrailTrackers

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

10
Jose

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

worksheet.Cells.AutoFitColumns()
8
johnny 5

Cela fonctionne très bien pour moi.

Essayer:

ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
5
leiit

Vous devrez calculer la largeur. Il n'y a pas de fonction de dimensionnement automatique dans la bibliothèque qui fonctionnera comme vous le souhaitez.

Autofitcolumn ne fonctionnera pas avec du texte encapsulé et les cellules avec des formules.

Regardez http://epplus.codeplex.com/discussions/218294?ProjectName=epplus pour obtenir des exemples de solutions au problème.

3
ffffff01

Dû utiliser worksheet.Column(1).AutoFit(0); AutoFit () ne faisait pas l'affaire.

2
xtds

Je l'utilise et fonctionne bien.

Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()
1
Jhonny Nina