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.
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.
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.
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();
}
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.
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()
Cela fonctionne très bien pour moi.
Essayer:
ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
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.
Dû utiliser worksheet.Column(1).AutoFit(0);
AutoFit () ne faisait pas l'affaire.
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()