Adicionando tabelas ao seu console - Série Spectre Console
[[academy-video-youtube({"vid": "jpCAgY5nqwc", "start_time": "0", "title": "Adicionando tabelas ao seu console - Série Spectre Console", "creator": "Tim Corey", "length": "10m 24s"})]]
Spectre.Console é uma poderosa biblioteca .NET que ajuda você a criar aplicativos de console com design elegante. Em vez de exibir apenas texto, você pode criar layouts estruturados, usar cores e até mesmo mostrar barras de progresso ou avisos interativos. Em sua série Spectre Console, Tim Corey mostra aos desenvolvedores como aproveitar ao máximo essa biblioteca em lições práticas e concisas.
Em seu vídeo " Adicionando tabelas ao seu console - Série Spectre Console ", Tim se concentra nas tabelas do Spectre.Console. As tabelas são um recurso fundamental que permite exibir dados estruturados com alinhamento, espaçamento, bordas e estilos. Vamos analisar mais detalhadamente o passo a passo do Tim para que você possa ver exatamente como usar esse recurso.
Primeiros passos com o Spectre.Console
No início (0:00), Tim explica que o Spectre.Console permite criar aplicativos visualmente atraentes e informativos. Ele é distribuído como um pacote NuGet chamado Spectre.Console. Você pode instalá-lo facilmente com:
// dotnet add package spectre console
dotnet add package Spectre.Console
// dotnet add package spectre console
dotnet add package Spectre.Console
Uma vez instalada, a biblioteca facilita muito a apresentação de informações em um aplicativo de console. Tim também indica os links para a documentação e o código-fonte fornecidos com o vídeo para quem estiver interessado em mais exemplos.
Criando sua primeira mesa
Tim começa a programar em 0:35. Ele cria um objeto Tabela:
var table = new Table();
var table = new Table();
Em seguida, ele adiciona três colunas com AddColumn:
table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");
table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");
Isso cria a estrutura básica. Ele explica que cada coluna poderá posteriormente ter sua própria largura, alinhamento e estilo.
Em seguida, ele adiciona linhas com AddRow. Tim, às 13h06, diz que existem três maneiras suportadas de adicionar linhas:
-
Uma lista de parâmetros de objetos IRenderable (para itens aninhados como um painel, outra tabela ou até mesmo gráficos).
-
Uma lista de parâmetros contendo strings (a mais comum).
- Um
IEnumerável<IRenderable>(menos comum, mas disponível).
Ele demonstra primeiro a segunda opção, acrescentando:
table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");
table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");
Isso insere duas linhas de dados na tabela. Aos 3:26, Tim lembra aos espectadores que é preciso usar AnsiConsole.Write(table) (e não WriteLine) para exibir um IRenderable como uma tabela no terminal:
AnsiConsole.Write(table);
AnsiConsole.Write(table);
Ao executar o programa, o console exibe uma tabela formatada de forma organizada, com os cabeçalhos e as linhas alinhados automaticamente. Mesmo com apenas algumas linhas de código, o Spectre faz com que a saída do console pareça muito mais profissional.

Alinhando e expandindo a tabela
Às 4:00, Tim mostra como controlar a posição da mesa na tela. Por exemplo:
table.Centered();
table.Centered();
Isso exibirá a tabela inteira no centro da janela do console. Ele explica que essa configuração afeta a tabela como um todo, e não as colunas individualmente. Você também pode alinhar a tabela à direita ou à esquerda. A opção padrão é esquerda.

Em seguida, aos 5:01, ele demonstra o uso de table.Expand(), que faz com que a tabela ocupe toda a largura da janela do terminal. Uma vez expandida, a centralização não tem efeito porque a tabela agora ocupa todo o espaço disponível. A opção padrão é uma tabela recolhida.

Adicionando bordas e entendendo o suporte ao terminal
Em seguida, Tim adiciona uma borda às 5:21:
table.Border(TableBorder.Rounded);
table.Border(TableBorder.Rounded);
Ele executa o aplicativo no console do Visual Studio e percebe que os cantos não estão arredondados. Às 5h54, ele muda para o Terminal do Windows e executa o comando novamente — agora os cantos arredondados aparecem.
Tim explica (5:59) que as capacidades de renderização dependem do terminal que você está usando. O shell subjacente apenas fornece a saída, mas o terminal decide quais estilos podem ser exibidos. O Terminal do Windows suporta caracteres com bordas arredondadas; O console integrado do Visual Studio não faz isso. O mesmo se aplica a cores, formatação ou quaisquer estilos de texto em itálico, sublinhado ou negrito que você possa adicionar.
Ele demonstra aos 7:01 que até mesmo o Prompt de Comando do Desenvolvedor fora do Visual Studio é renderizado corretamente porque utiliza um terminal diferente. Este é um ponto importante a ter em mente se você estiver experimentando recursos do Spectre, como barras de progresso, tarefas de longa duração ou tabelas: nem todos os terminais podem exibir todos os estilos.
Adicionando separadores de linha
Tim também destaca que você pode exibir separadores entre as linhas para maior clareza:
table.ShowRowSeparators();
table.ShowRowSeparators();
Isso cria uma linha horizontal entre cada linha, o que pode facilitar a leitura de informações em tabelas maiores — especialmente ao criar ferramentas de linha de comando que exibem muitas saídas ou lidam com argumentos dinamicamente.
Estilização em nível de coluna: preenchimento, largura, alinhamento
Um dos pontos fortes das tabelas do Spectre.Console é o quanto você pode personalizar cada coluna individualmente. Às 8h02, Tim modifica a primeira coluna:
table.Columns[0].PadLeft(5).PadRight(5);
table.Columns[0].PadLeft(5).PadRight(5);
Isso adiciona espaço em ambos os lados do texto. Em seguida, ele define uma largura fixa para a segunda coluna:
table.Columns[1].Width(15);
table.Columns[1].Width(15);
Por fim, ele alinha o conteúdo dessa coluna à direita:
table.Columns[1].RightAligned();
table.Columns[1].RightAligned();
Quando ele executar o programa novamente às 9h10, você poderá ver a primeira coluna com espaçamento interno, a segunda coluna com largura fixa e o conteúdo alinhado à direita. Até mesmo o texto do cabeçalho respeita essas configurações. Tim observa (8:42) que as larguras são medidas em caracteres, não em pixels.
Esses pequenos detalhes — espaçamento, alinhamento e larguras fixas — tornam seus aplicativos de console muito mais legíveis. Combinando as cores, a formatação e os painéis do Spectre, você pode criar uma saída que se assemelha mais a uma interface gráfica, mas que é executada inteiramente em um console.

Adicionando linhas de IEnumerable<IRenderable>
Às 9h25, Tim demonstra a terceira maneira de adicionar uma linha — passando um IEnumerable.<IRenderable> . Ele prepara uma lista de objetos de texto:
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);
Isso insere outra linha usando uma coleção. Tim comenta que essa opção "não é muito útil" no código do dia a dia, mas é compatível se você estiver gerando linhas dinamicamente a partir de outra fonte, como dados de um arquivo, uma estrutura de teste de unidade ou um prompt interativo.

Concluindo
No final do vídeo (9:59), Tim resume: As tabelas do Spectre.Console oferecem muitos recursos para apresentar informações de forma organizada e estruturada. Você pode controlar o alinhamento, a largura e o estilo da borda da tabela, adicionar separadores de linha, aplicar espaçamento às colunas e até mesmo incorporar painéis ou outros elementos renderizáveis.
Como a biblioteca é fortemente inspirada no design moderno de CLI, ela suporta não apenas tabelas, mas também indicadores de progresso para tarefas de longa duração, gráficos, marcação para negrito, itálico, sublinhado e cores (como texto azul ou verde), entre outros. Tim incentiva os espectadores a consultarem a documentação e experimentarem os exemplos para verem como o Spectre pode tornar a saída do console mais interessante.
Seguindo a demonstração passo a passo de Tim Corey, você verá como o Spectre.Console permite criar aplicativos de console incríveis com o mínimo de esforço. Instale o pacote NuGet , explore a API e comece hoje mesmo a transformar a saída simples do seu console em exibições estruturadas e estilizadas.
