Zum Fußzeileninhalt springen
Iron Academy Logo
C#-Anwendung
C#-Anwendung

Andere Kategorien

Hinzufügen von Tabellen zu Ihrer Konsole - Spectre Console Series

Tim Corey
10m 24s

Spectre.Console ist eine leistungsstarke .NET-Bibliothek, mit der Sie schöne Konsolenanwendungen erstellen können. Anstelle der reinen Textausgabe können Sie strukturierte Layouts erstellen, Farben verwenden und sogar Fortschrittsbalken oder interaktive Eingabeaufforderungen anzeigen. In seiner Spectre Console Series zeigt Tim Corey Entwicklern in kleinen, praktischen Lektionen, wie sie das Beste aus dieser Bibliothek herausholen können.

In seinem Video "Adding Tables to Your Console - Spectre Console Series" konzentriert sich Tim auf Spectre.Console-Tabellen. Tabellen sind eine Kernfunktion, mit der Sie strukturierte Daten mit Ausrichtung, Auffüllung, Rahmen und Stilen anzeigen können. Wir sehen uns Tims Komplettlösung genauer an, damit Sie genau sehen können, wie Sie diese Funktion nutzen können.

Einführung in Spectre.Console

Zu Beginn (0:00) erklärt Tim, dass Sie mit Spectre.Console visuell ansprechende, informative Anwendungen erstellen können. Sie wird als NuGet-Paket namens Spectre.Console verteilt. Sie können es einfach mit installieren:

// dotnet add package spectre console
dotnet add package Spectre.Console
// dotnet add package spectre console
dotnet add package Spectre.Console

Einmal installiert, erleichtert die Bibliothek die Darstellung von Informationen in einer Konsolenanwendung erheblich. Tim verweist auch auf die Dokumentation und die Quellcode-Links, die mit dem Video geliefert werden, für alle, die an weiteren Beispielen interessiert sind.

Erstellen Ihrer ersten Tabelle

Tim beginnt bei 0:35 mit der Codierung. Er erstellt ein Table-Objekt:

var table = new Table();
var table = new Table();

Anschließend fügt er mit AddColumn drei Spalten hinzu:

table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");
table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");

So entsteht die Grundstruktur. Er erklärt, dass jede Spalte später ihre eigene Breite, Ausrichtung und ihren eigenen Stil haben kann.

Als nächstes fügt er Zeilen mit AddRow hinzu. Tim bei 1:06 sagt, dass es drei unterstützte Möglichkeiten zum Hinzufügen von Zeilen gibt:

  1. Eine params-Liste von IRenderable-Objekten (für verschachtelte Elemente wie ein Panel, eine weitere Tabelle oder sogar Diagramme).

  2. Eine Params-Liste mit Zeichenketten (die häufigsten).

  3. Ein IEnumerable (weniger verbreitet, aber verfügbar).

Er demonstriert zunächst die zweite Option und fügt hinzu:

table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");
table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");

Dadurch werden zwei Datenzeilen in die Tabelle eingefügt. Bei 3:26 erinnert Tim die Zuschauer daran, dass Sie AnsiConsole.Write(table) (nicht WriteLine) verwenden müssen, um eine IRenderable wie eine Tabelle im Terminal anzuzeigen:

AnsiConsole.Write(table);
AnsiConsole.Write(table);

Wenn er das Programm ausführt, zeigt die Konsole eine sauber formatierte Tabelle mit automatisch ausgerichteten Kopfzeilen und Zeilen an. Selbst mit nur wenigen Codezeilen lässt Spectre die Konsolenausgabe viel professioneller aussehen.

Spectre Console Adding Tables 1 related to Erstellen Ihrer ersten Tabelle

Ausrichten und Erweitern der Tabelle

Bei 4:00 zeigt Tim, wie man die Position der Tabelle auf dem Bildschirm steuern kann. Zum Beispiel:

table.Centered();
table.Centered();

Dadurch wird die gesamte Tabelle in der Mitte des Konsolenfensters angezeigt. Er erklärt, dass sich diese Einstellung auf die Tabelle als Ganzes auswirkt, nicht auf die Spalten. Sie können die Tabelle auch rechts- oder linksbündig ausrichten. Der Standard ist links.

Spectre Console Adding Tables 2 related to Ausrichten und Erweitern der Tabelle

Anschließend demonstriert er table.Expand() bei 5:01, wodurch die Tabelle die gesamte Breite des Terminalfensters ausfüllt. Nach der Erweiterung hat die Zentrierung keine Wirkung mehr, da die Tabelle nun den gesamten verfügbaren Platz einnimmt. Die Vorgabe ist eine eingeklappte Tabelle.

Spectre Console Adding Tables 3 related to Ausrichten und Erweitern der Tabelle

Hinzufügen von Grenzen und Verstehen der Terminalunterstützung

Als Nächstes fügt Tim bei 5:21 einen Rahmen hinzu:

table.Border(TableBorder.Rounded);
table.Border(TableBorder.Rounded);

Er führt die Anwendung in der Konsole von Visual Studio aus und stellt fest, dass die Ecken nicht abgerundet sind. Um 5:54 Uhr wechselt er zu Windows Terminal und führt es erneut aus - jetzt erscheinen die abgerundeten Ecken.

Tim erklärt (5:59), dass die Rendering-Fähigkeiten von dem verwendeten Terminal abhängen. Die zugrundeliegende Shell liefert nur die Ausgabe, aber das Terminal entscheidet, welche Stile es anzeigen kann. Windows Terminal unterstützt die abgerundeten Randzeichen; Die integrierte Konsole von Visual Studio funktioniert nicht. Das Gleiche gilt für Farben, Markierungen oder kursive, unterstrichene oder fette Textstile, die Sie hinzufügen können.

Bei 7:01 zeigt er, dass sogar die Eingabeaufforderung für Entwickler außerhalb von Visual Studio korrekt wiedergegeben wird, da sie ein anderes Terminal verwendet. Dies ist ein wichtiger Punkt, den Sie beachten sollten, wenn Sie Spectre-Funktionen wie Fortschrittsbalken, lang laufende Aufgaben oder Tabellen ausprobieren: Nicht alle Terminals können jeden Stil anzeigen.

Zeilentrennzeichen einfügen

Tim weist außerdem darauf hin, dass Sie zur besseren Übersichtlichkeit Trennzeichen zwischen den Zeilen einfügen können:

table.ShowRowSeparators();
table.ShowRowSeparators();

Dadurch wird eine horizontale Linie zwischen den einzelnen Zeilen gezeichnet, was das Scannen von Informationen in größeren Tabellen erleichtern kann - vor allem, wenn Sie CLI-Tools erstellen, die viele Ausgaben anzeigen oder Args dynamisch verarbeiten.

Styling auf Spaltenebene: Auffüllen, Breite, Ausrichtung

Eine der Stärken von Spectre.Console-Tabellen ist, dass Sie jede Spalte individuell anpassen können. Um 8:02 Uhr ändert Tim die erste Spalte:

table.Columns[0].PadLeft(5).PadRight(5);
table.Columns[0].PadLeft(5).PadRight(5);

Dadurch werden auf beiden Seiten des Textes Füllungen hinzugefügt. Anschließend legt er eine feste Breite für die zweite Spalte fest:

table.Columns[1].Width(15);
table.Columns[1].Width(15);

Schließlich richtet er den Inhalt dieser Spalte rechtsbündig aus:

table.Columns[1].RightAligned();
table.Columns[1].RightAligned();

Wenn er das Programm um 9:10 Uhr erneut ausführt, können Sie sehen, dass die erste Spalte aufgefüllt, die zweite Spalte auf eine feste Breite eingestellt und der Inhalt rechts ausgerichtet ist. Selbst der Kopfzeilentext respektiert diese Einstellungen. Tim weist darauf hin (8:42), dass die Breite in Zeichen und nicht in Pixeln gemessen wird.

Diese kleinen Verbesserungen - Füllung, Ausrichtung und feste Breiten - machen Ihre Konsolenanwendungen viel lesbarer. In Kombination mit den Farben, Auszeichnungselementen und Bedienfeldern von Spectre können Sie eine Ausgabe erstellen, die einer grafischen Benutzeroberfläche ähnelt, aber vollständig in einer Konsole ausgeführt wird.

Spectre Console Adding Tables 4 related to Styling auf Spaltenebene: Auffüllen, Breite, Ausrichtung

Hinzufügen von Zeilen aus IEnumerable

Bei 9:25 demonstriert Tim die dritte Möglichkeit, eine Zeile hinzuzufügen - durch Übergabe eines IEnumerable. Er bereitet eine Liste von Textobjekten vor:

var person = new List<Text>
{
    new Text("Bilbo"),
    new Text("Baggins"),
    new Text("111")
};

table.AddRow(person);
var person = new List<Text>
{
    new Text("Bilbo"),
    new Text("Baggins"),
    new Text("111")
};

table.AddRow(person);

Dies fügt eine weitere Zeile unter Verwendung einer Sammlung ein. Tim kommentiert, dass diese Option im alltäglichen Code "nicht sehr nützlich" ist, aber sie wird unterstützt, wenn Sie Zeilen dynamisch aus einer anderen Quelle generieren, z. B. Daten aus einer Datei, einem Unit-Testing-Framework oder einer interaktiven Eingabeaufforderung.

Spectre Console Adding Tables 5 related to Hinzufügen von Zeilen aus IEnumerable

Zusammenfassung

Am Ende des Videos (9:59), fasst Tim zusammen: Spectre.Console-Tabellen bieten eine Menge Möglichkeiten, Informationen übersichtlich und strukturiert darzustellen. Sie können die Ausrichtung, die Breite und den Rahmenstil der Tabelle steuern, Zeilentrenner hinzufügen, Spalten auffüllen und sogar Bedienfelder oder andere Renderables einbetten.

Da die Bibliothek stark vom modernen CLI-Design inspiriert ist, unterstützt sie nicht nur Tabellen, sondern auch Fortschrittsindikatoren für lang laufende Aufgaben, Diagramme, Markup für fett, kursiv, unterstrichen und Farben (wie blauen oder grünen Text) und vieles mehr. Tim ermutigt die Betrachter, die Dokumentation zu lesen und die Beispiele auszuprobieren, um zu sehen, wie Spectre Ihre Konsolenausgabe interessanter machen kann.

Anhand der Schritt-für-Schritt-Demonstration von Tim Corey werden Sie sehen, wie Sie mit Spectre.Console mit minimalem Aufwand schöne Konsolenanwendungen erstellen können. Installieren Sie das NuGet-Paket, erkunden Sie die API und beginnen Sie noch heute damit, Ihre einfachen Konsolenausgaben in strukturierte, gestylte Anzeigen umzuwandeln.

Hero Worlddot related to Hinzufügen von Tabellen zu Ihrer Konsole - Spectre Console Series
Hero Affiliate related to Hinzufügen von Tabellen zu Ihrer Konsole - Spectre Console Series

Verdienen Sie mehr, indem Sie teilen, was Sie lieben

Erstellen Sie Inhalte für Entwickler, die mit .NET, C#, Java, Python oder Node.js arbeiten? Verwandeln Sie Ihr Fachwissen in ein zusätzliches Einkommen!

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an