Es gibt mehrere NuGet-Pakete, die bei der Formatierung helfen können. In einigen Fällen string.Format
reichen die Funktionen von aus, aber Sie möchten möglicherweise die Größe von Spalten zumindest basierend auf dem Inhalt automatisch anpassen.
ConsoleTableExt
ConsoleTableExt ist eine einfache Bibliothek, mit der Tabellen formatiert werden können, einschließlich Tabellen ohne Gitterlinien. (Ein beliebteres Paket ConsoleTables scheint keine randlosen Tabellen zu unterstützen.) Hier ein Beispiel für die Formatierung einer Liste von Objekten mit Spalten, deren Größe auf deren Inhalt basiert:
ConsoleTableBuilder
.From(orders
.Select(o => new object[] {
o.CustomerName,
o.Sales,
o.Fee,
o.Value70,
o.Value30
})
.ToList())
.WithColumn(
"Customer",
"Sales",
"Fee",
"70% value",
"30% value")
.WithFormat(ConsoleTableBuilderFormat.Minimal)
.WithOptions(new ConsoleTableBuilderOption { DividerString = "" })
.ExportAndWriteLine();
CsConsoleFormat
Wenn Sie mehr Funktionen benötigen, können Sie mit CsConsoleFormat eine beliebige Konsolenformatierung erreichen . † Im Folgenden wird beispielsweise eine Liste von Objekten als Raster mit einer festen Spaltenbreite von 10 formatiert, wie in den anderen Antworten mit string.Format
:
ConsoleRenderer.RenderDocument(
new Document { Color = ConsoleColor.Gray }
.AddChildren(
new Grid { Stroke = LineThickness.None }
.AddColumns(10, 10, 10, 10, 10)
.AddChildren(
new Div("Customer"),
new Div("Sales"),
new Div("Fee"),
new Div("70% value"),
new Div("30% value"),
orders.Select(o => new object[] {
new Div().AddChildren(o.CustomerName),
new Div().AddChildren(o.Sales),
new Div().AddChildren(o.Fee),
new Div().AddChildren(o.Value70),
new Div().AddChildren(o.Value30)
})
)
));
Es mag komplizierter als rein aussehen string.Format
, aber jetzt kann es angepasst werden. Zum Beispiel:
Wenn Sie die Größe von Spalten basierend auf dem Inhalt automatisch ändern möchten, ersetzen Sie sie AddColumns(10, 10, 10, 10, 10)
durch AddColumns(-1, -1, -1, -1, -1)
( -1
ist eine Verknüpfung zu GridLength.Auto
, Sie haben mehr Größenoptionen, einschließlich des Prozentsatzes der Breite des Konsolenfensters).
Wenn Sie die Zahlenspalten rechts ausrichten möchten, fügen Sie { Align = Right }
sie dem Initialisierer einer Zelle hinzu.
Wenn Sie eine Spalte einfärben möchten, fügen Sie { Color = Yellow }
sie dem Initialisierer einer Zelle hinzu.
Sie können Rahmenstile und mehr ändern.
† CsConsoleFormat wurde von mir entwickelt.