Title: Tables Order: 3 --- 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. ```csharp // 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.Render(table); ``` This will render the following output: ![Table](assets/images/table.png) # Table appearance ## Borders For a list of borders, see the [Borders](xref:borders) appendix section. ```csharp // Sets the border table.SetBorder(Border.None); table.SetBorder(Border.Ascii); table.SetBorder(Border.Square); table.SetBorder(Border.Rounded); ``` ## Expand / Collapse ```csharp // 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 ```csharp // Hides all column headers table.HideHeaders(); ``` ## Set table width ```csharp // Sets the table width to 50 cells table.SetWidth(50); ``` # Column appearance ## Alignment ```csharp // Set the alignment explicitly column.SetAlignment(Justify.Right); ``` ## Padding ```csharp // Set left and right padding column.SetPadding(left: 3, right: 5); // Set padding individually. column.PadLeft(3); column.PadRight(5); ``` ## Disable column wrapping ```csharp // Disable column wrapping column.NoWrap(); ``` ## Set column width ```csharp // Set the column width (no fluent extension method for this yet) column.Width = 15; ```