Table

Tables are a perfect way of displaying tabular data in a terminal.

Spectre.Console is super smart about rendering tables and will adjust all columns to fit whatever is inside them. Anything that implements IRenderable can be used as a column header or column cell, even another table!

Usage

To render a table, create a Table instance, add the number of columns that you need, and then add the rows. Finish by passing the table to a console's Render method.

// Create a table
var table = new Table();

// Add some columns
table.AddColumn("Foo");
table.AddColumn(new TableColumn("Bar").Centered());

// Add some rows
table.AddRow("Baz", "[green]Qux[/]");
table.AddRow(new Markup("[blue]Corgi[/]"), new Panel("Waldo"));

// Render the table to the console
AnsiConsole.Write(table);

This will render the following output:

Table

Table appearance

Borders

For a list of borders, see the Borders appendix section.

// Sets the border
table.Border(TableBorder.None);
table.Border(TableBorder.Ascii);
table.Border(TableBorder.Square);
table.Border(TableBorder.Rounded);

Expand / Collapse

// Table will take up as much space as it can
// with respect to other things.
table.Expand();

// Table will take up minimal width
table.Collapse();

Hide headers

// Hides all column headers
table.HideHeaders();

Set table width

// Sets the table width to 50 cells
table.Width(50);

Alignment

table.Alignment(Justify.Right);
table.RightAligned();
table.Centered();
table.LeftAligned();

Column appearance

Alignment

table.Columns[0].Alignment(Justify.Right);
table.Columns[0].LeftAligned();
table.Columns[0].Centered();
table.Columns[0].RightAligned();

Padding

// Set padding individually
table.Columns[0].PadLeft(3);
table.Columns[0].PadRight(5);

// Or chained together
table.Columns[0].PadLeft(3).PadRight(5);

// Or with the shorthand method if the left and right 
// padding are identical. Vertical padding is ignored.
table.Columns[0].Padding(4, 0);

Disable column wrapping

// Disable column wrapping
table.Columns[0].NoWrap();

Set column width

// Set the column width
table.Columns[0].Width(15);

References