it-swarm.com.de

Automatische Spaltenbreite in EPPlus

Wie kann man Spalten auf automatische Breite einstellen, wenn Texte in Spalten lang sind?

Ich benutze diesen Code

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

Keine dieser Methoden funktioniert

Gibt es irgendwelche Möglichkeiten, es zum Laufen zu bringen?

Hinweis: Einige meiner Texte verwenden Unicode.

121
Pengan

Verwenden Sie AutoFitColumns, aber Sie müssen die Zellen angeben, ich nehme das gesamte Arbeitsblatt an:

VB.NET

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

C #

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

Bitte beachten Sie, dass Sie diese Methode aufrufen müssen, nachdem Sie das Arbeitsblatt ausgefüllt haben.

223
Tim Schmelter

Ich habe diesen Code mit der Version 3.1.3.0 von EPPlus verwendet und er funktioniert:

worksheet.Column(1).AutoFit();

dabei ist Arbeitsblatt die Variable, die auf das Arbeitsblatt verweist, das ich in meinem Code erstellt habe (keine Klasse mit einer statischen Methode!).

Natürlich müssen Sie rufen Sie diese Methode auf, nachdem Sie die Spalten gefüllt haben.

38

Ich weiß, dass dies eine alte Frage ist, aber ich verwende den folgenden Code und er scheint direkt auf das einzugehen, was Sie versucht haben.

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

Ich weiß, es ist ein bisschen spät, aber ich hatte heute das gleiche Problem. Wenn Sie einen worksheet.DefaultColWidth Definiert haben, funktioniert dies nicht. Ich habe diese Zeile entfernt und Worksheet.cells.AutoFitColumns(); hinzugefügt und es funktioniert jetzt.

10
Jose

Ich wollte nur darauf hinweisen, dass Sie Zellen ohne Angabe des Bereichs anpassen können. Rufen Sie dies auf, nachdem Sie alle Spalten usw. formatiert haben:

worksheet.Cells.AutoFitColumns()
8
johnny 5

Es funktioniert gut für mich.

Versuchen:

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

Sie müssen die Breite berechnen. In der Bibliothek gibt es keine Autosizing-Funktion, die so funktioniert, wie Sie es beabsichtigen.

Autofitcolumn funktioniert nicht mit umbrochenem Text und Zellen mit Formeln.

Schauen Sie unter http://epplus.codeplex.com/discussions/218294?ProjectName=epplus nach, wie Sie das Problem lösen können.

3
ffffff01

Musste verwenden worksheet.Column(1).AutoFit(0); AutoFit () hat den Trick nicht getan.

2
xtds

Ich benutze dies und funktioniert gut.

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