Dodawanie tabel do konsoli - seria Spectre Console
Spectre.Console to potężna biblioteka .NET, która pomaga tworzyć piękne aplikacje konsolowe. Zamiast wyjścia tekstowego, możesz budować uporządkowane układy, używać kolorów, a nawet wyświetlać paski postępu lub interaktywne monity. W swojej serii Spectre Console, Tim Corey pokazuje programistom, jak w pełni wykorzystać tę bibliotekę w małych, praktycznych lekcjach.
W swoim wideo, "Dodawanie Tabel do Konsoli - Seria Spectre Console", Tim skupia się na tabelach Spectre.Console. Tabele to podstawowa funkcja, która pozwala wyświetlić uporządkowane dane z wyrównaniem, odstępami, obramowaniem i stylami. Spojrzmy dokładniej na przeprowadzenie Tima, abyś mógł zobaczyć, jak dokładnie korzystać z tej funkcji.
Rozpoczęcie pracy z Spectre.Console
Na początku (0:00), Tim wyjaśnia, że Spectre.Console pozwala tworzyć wizualnie atrakcyjne i informacyjne aplikacje. Jest dystrybuowane jako pakiet NuGet nazwany Spectre.Console. Można go łatwo zainstalować za pomocą:
// dotnet add package spectre console
dotnet add package Spectre.Console
// dotnet add package spectre console
dotnet add package Spectre.Console
Po zainstalowaniu biblioteka znacznie ułatwia prezentację informacji w aplikacji konsolowej. Tim wskazuje także na dokumentację i linki do kodu źródłowego dołączone do wideo dla zainteresowanych dalszymi przykładami.
Tworzenie Twojej Pierwszej Tabeli
Tim zaczyna kodowanie od 0:35. Tworzy obiekt Table:
var table = new Table();
var table = new Table();
Następnie dodaje trzy kolumny z AddColumn:
table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");
table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");
To tworzy podstawową strukturę. Wyjaśnia, że każda kolumna może później mieć swoją własną szerokość, wyrównanie i styl.
Następnie dodaje wiersze z AddRow. Tim o 1:06 mówi, że są trzy wspierane sposoby dodawania wierszy:
-
Lista params obiektów IRenderable (dla zagnieżdżonych elementów jak panel, inna tabela lub nawet wykresy).
-
Lista params ciągów znaków (najczęściej spotykana).
- IEnumerable
(rzadziej spotykane, ale dostępne).
Najpierw demonstruje drugą opcję, dodając:
table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");
table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");
To umieszcza dwa wiersze danych w tabeli. O 3:26 Tim przypomina widzom, że musisz użyć AnsiConsole.Write(table) (nie WriteLine), aby wyświetlić IRenderable takie jak tabela w terminalu:
AnsiConsole.Write(table);
AnsiConsole.Write(table);
Kiedy uruchamia program, konsola wyświetla ładnie sformatowaną tabelę z automatycznym wyrównaniem nagłówków i wierszy. Nawet przy tylko kilku liniach kodu, Spectre sprawia, że wyjście konsoli wygląda znacznie bardziej profesjonalnie.

Wyrównywanie i Rozszerzanie Tabeli
O 4:00 Tim pokazuje, jak kontrolować pozycję tabeli na ekranie. Na przykład:
table.Centered();
table.Centered();
To wyświetli całą tabelę na środku okna konsoli. Wyjaśnia, że to ustawienie wpływa na tabelę jako całość, a nie na kolumny. Możesz także wyrównać tabelę do prawej lub lewej. Domyślnym ustawieniem jest lewo.

Następnie demonstruje table.Expand() o 5:01, które powoduje, że tabela wypełnia całą szerokość okna terminala. Po rozszerzeniu, centrowanie nie ma wpływu, ponieważ tabela teraz zajmuje całą dostępną przestrzeń. Domyślną opcją jest złożona tabela.

Dodawanie Obramowań i Zrozumienie Wsparcia Terminala
Następnie Tim dodaje obramowanie o 5:21:
table.Border(TableBorder.Rounded);
table.Border(TableBorder.Rounded);
Uruchamia aplikację wewnątrz konsoli Visual Studio i zauważa, że rogi nie są zaokrąglone. O 5:54 przełącza się na Windows Terminal i ponownie uruchamia — teraz pojawiają się zaokrąglone rogi.
Tim wyjaśnia (5:59), że możliwości renderowania zależą od terminala, którego używasz. Podstawowa powłoka tylko dostarcza wyjście, ale to terminal decyduje, które style może pokazać. Windows Terminal obsługuje zaokrąglone znaki obramowania; Zintegrowana konsola Visual Studio tego nie robi. To samo dotyczy kolorów, znaczników lub jakichkolwiek stylów tekstu z kursywą, podkreśleniem lub pogrubieniem, które możesz dodać.
O 7:01 pokazuje, że nawet Developer Command Prompt poza Visual Studio renderuje poprawnie, ponieważ używa innego terminala. To ważna kwestia do zapamiętania, jeśli próbujesz funkcji Spectre, takich jak paski postępu, długie zadania czy tabele: nie wszystkie terminale mogą wyświetlać każdy styl.
Dodawanie Separatorów Wierszy
Tim również wskazuje, że można pokazać separatorki między wierszami dla jasności:
table.ShowRowSeparators();
table.ShowRowSeparators();
To rysuje poziomą linię między każdym wierszem, co może ułatwić przeglądanie informacji w większych tabelach — zwłaszcza gdy budujesz narzędzia CLI, które wyświetlają dużo wyjścia lub dynamicznie obsługują argumenty.
Stylizacja na Poziomie Kolumny: Odstępy, Szerokość, Wyrównanie
Jedną z zalet tabel Spectre.Console jest to, jak wiele można dostosować każdą kolumnę indywidualnie. O 8:02 Tim modyfikuje pierwszą kolumnę:
table.Columns[0].PadLeft(5).PadRight(5);
table.Columns[0].PadLeft(5).PadRight(5);
To dodaje odstępy po obu stronach tekstu. Następnie ustawia stałą szerokość na drugiej kolumnie:
table.Columns[1].Width(15);
table.Columns[1].Width(15);
Na końcu wyrównuje zawartość tej kolumny do prawej:
table.Columns[1].RightAligned();
table.Columns[1].RightAligned();
Kiedy ponownie uruchamia program o 9:10, można zobaczyć pierwszą kolumnę z odstępem, drugą kolumnę o stałej szerokości, a zawartość wyrównaną do prawej. Nawet tekst nagłówka szanuje te ustawienia. Tim zauważa (8:42), że szerokości są mierzone w znakach, nie w pikselach.
Te drobne zmiany — odstępy, wyrównanie i stałe szerokości — sprawiają, że aplikacje konsolowe są znacznie bardziej czytelne. Połączone z kolorami, znacznikami i panelami Spectre, można tworzyć wyjścia, które przypominają GUI, ale działają całkowicie w konsoli.

Dodawanie Wierszy z IEnumerable
O 9:25 Tim demonstruje trzeci sposób dodania wiersza — przekazując IEnumerable
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);
To wstawia inny wiersz przy użyciu kolekcji. Tim komentuje, że ta opcja jest "niezbyt użyteczna" w codziennym kodzie, ale jest wspierana, jeśli generujesz wiersze dynamicznie z innego źródła, takiego jak dane z pliku, framework testów jednostkowych czy interaktywny monit.

Podsumowanie
Na końcu wideo (9:59) Tim podsumowuje: Tabele Spectre.Console dają ogromne możliwości prezentacji informacji w przejrzysty i uporządkowany sposób. Możesz kontrolować wyrównanie, szerokość i styl obramowania tabeli, dodawać separatorki wierszy, stosować odstępy do kolumn, a nawet osadzać panele czy inne elementy renderowane.
Ponieważ biblioteka jest silnie inspirowana nowoczesnym projektem CLI, wspiera nie tylko tabele, ale także wskaźniki postępu dla długich zadań, wykresy, znacznik do pogrubienia, kursywy, podkreślenia i kolorów (jak niebieski czy zielony tekst), i wiele więcej. Tim zachęca widzów do sprawdzenia dokumentacji i wypróbowania przykładów, aby zobaczyć, jak Spectre może uczynić twoje wyjście konsolowe bardziej angażującym.
Podążając za krok po kroku demonstracją Tima Corey'a, zobaczysz, jak Spectre.Console umożliwia tworzenie pięknych aplikacji konsolowych z minimalnym wysiłkiem. Zainstaluj pakiet NuGet, zbadaj API i zacznij przekształcać swoje surowe wyjścia konsolowe w uporządkowane, stylizowane wyświetłącze już dziś.
