Code that generates of the above table can be found here
Note: Readme is still WIP for V2. Please refer to the Examples project for examples on the V2 API.
Faster, colorable, more configurable, and more robust console colors & tables for C# console applications.
Provides tables for your console application! But really, it provides tables in a performance friendly way, while also adding the ability to display multiple tables in a variety of formats. There is additional configuration information that you can use to overwrite default functionality, allowing you to create tables with whatever style you want.
To make something better than the defacto console tables library.
Install-Package BetterConsoleTables -Version 1.1.2
using BetterConsoleTables;
Yes! Yes I did. I wrote this to not just be highly configurable, but also performance friendly. Version 2 adds significant complexity by allowing for coloring, formatting, and greater configuration flexibility. This, unfortunately, comes at a cost.
As you can see from the tests below, Version 2 takes ~1.1x as long as the defacto library. Version 1 is nearly 3x faster.
Test | Mean | StdDev | Ratio |
---|---|---|---|
OtherConsoleTable | 9.8 us | 0.86 us | 1.00 |
v1 | 3.78 us | 0.15 us | 0.39 |
v2 | 10.89 us | 0.13 us | 1.11 |
v2 Formatted | 14.96 us | 0.29 us | 1.52 |
v2 Formatted Replace Rows | 13.97 us | 0.13 us | 1.42 |
[Coming Soon]
[Coming Soon]
[Coming Soon]
** Does not work in default windows console
static void Main(String[] args)
{
Table table = new Table("one", "two", "three");
table.AddRow(1, 2, 3)
.AddRow("long line goes here", "short text", "word");
Console.Write(table.ToString());
Console.ReadKey();
}
static void Main(String[] args)
{
Table table = new Table(TableConfig.MySql());
table.From<SomeData>(rows);
Console.Write(table.ToString());
}
static void Main(String[] args)
{
Table table = new Table("One", "Two", "Three")
.AddRow("1", "2", "3")
.AddRow("Short", "item", "Here")
.AddRow("Longer items go here", "stuff stuff", "stuff");
Table table2 = new Table("One", "Two", "Three", "Four")
.AddRow("One", "Two", "Three")
.AddRow("Short", "item", "Here", "A fourth column!!!")
.AddRow("stuff", "longer stuff", "even longer stuff in this cell")
.Config = Config.UnicodeAlt();
ConsoleTables tables = new ConsoleTables(table, table2);
Console.Write(tables.ToString());
Console.ReadKey();
}
ColumnHeader[] headers = new[]
{
new ColumnHeader("Left"),
new ColumnHeader("Left Header", Alignment.Right),
new ColumnHeader("Right Header", Alignment.Center, Alignment.Right),
};
Table table = new Table(headers)
.AddRow("1", "2", "3")
.AddRow("Short", "item", "Here")
.AddRow("Longer items go here", "Right Contents", "Centered Contents");
table.Config = TableConfiguration.MySqlSimple(); // Sets table formatting
Console.Write(table.ToString());
Console.ReadKey();
ColumnHeader[] headers = new[]
{
new ColumnHeader("Left"),
new ColumnHeader("Right", Alignment.Right, Alignment.Right),
new ColumnHeader("Center", Alignment.Center, Alignment.Center),
};
Table table = new Table(headers);
+----------------------+-------------+---------------------+
| Left | Right | Center |
+----------------------+-------------+---------------------+
| 1 | 2 | 3 |
| Short | item | Here |
| Longer items go here | stuff stuff | some centered thing |
+----------------------+-------------+---------------------+
ColumnHeader[] headers = new[]
{
new ColumnHeader("Left"),
new ColumnHeader("Left Header", Alignment.Right),
new ColumnHeader("Right Header", Alignment.Center, Alignment.Right),
};
Table table = new Table(headers);
+----------------------+----------------+-------------------+
| Left | Left Header | Right Header |
+----------------------+----------------+-------------------+
| 1 | 2 | 3 |
| Short | item | Here |
| Longer items go here | Right Contents | Centered Contents |
+----------------------+----------------+-------------------+
----------------------------------------------
| One | Two | Three |
----------------------------------------------
| 1 | 2 | 3 |
----------------------------------------------
| Short | item | Here |
----------------------------------------------
| Longer items go here | stuff stuff | stuff |
----------------------------------------------
table.Config = TableConfiguration.Markdown();
| One | Two | Three |
|----------------------|-------------|-------|
| 1 | 2 | 3 |
| Short | item | Here |
| Longer items go here | stuff stuff | stuff |
table.Config = TableConfiguration.MySql();
+----------------------+-------------+-------+
| One | Two | Three |
+----------------------+-------------+-------+
| 1 | 2 | 3 |
+----------------------+-------------+-------+
| Short | item | Here |
+----------------------+-------------+-------+
| Longer items go here | stuff stuff | stuff |
+----------------------+-------------+-------+
table.Config = TableConfiguration.MySqlSimple();
+----------------------+-------------+-------+
| One | Two | Three |
+----------------------+-------------+-------+
| 1 | 2 | 3 |
| Short | item | Here |
| Longer items go here | stuff stuff | stuff |
+----------------------+-------------+-------+
table.Config = TableConfiguration.Unicode();
┌──────────────────────┬─────────────┬───────┐
│ One │ Two │ Three │
├──────────────────────┼─────────────┼───────┤
│ 1 │ 2 │ 3 │
│ Short │ item │ Here │
│ Longer items go here │ stuff stuff │ stuff │
└──────────────────────┴─────────────┴───────┘
table.Config = TableConfiguration.UnicodeAlt();
╔══════════════════════╦═════════════╦═══════╗
║ One ║ Two ║ Three ║
╠══════════════════════╬═════════════╬═══════╣
║ 1 ║ 2 ║ 3 ║
║ Short ║ item ║ Here ║
║ Longer items go here ║ stuff stuff ║ stuff ║
╚══════════════════════╩═════════════╩═══════╝
This LGPL-v3 license applies For all changes as part of the Version2 branch, from commit 0a2e191f96f7f1bb14f8a768d788e0a4aa272430 onwards. Previous to this all code is licensed under MIT.