/ConsoleTableExt

A fluent library to print out a nicely formatted table in a console application C#

Primary LanguageC#MIT LicenseMIT

ConsoleTableExt Build status

A library to print out a nicely formatted table in a console application C#

Nuget

Install-Package ConsoleTableExt

Feature

  • Support box-drawing characters
  • Table alignment (left right and center)
  • Column alignment (left/right/center)
  • Table can have TITLE, can change text color and background color of title, support title alignment (left/right/center)
  • Support power char-map, strong customization ability
  • Contain some popular formas like Markdown table...
  • Support text formatter (include header)
  • Support many kind data type: DataTable, List...
  • Support metadata row (placed at top or bottom of table)
  • Column min-length
  • support .NET Framework >= 3.5, .NET core
  • ...
  • How to use:

    var tableData = new List<List<object>>
    {
        new List<object>{ "Sakura Yamamoto", "Support Engineer", "London", 46},
        new List<object>{ "Serge Baldwin", "Data Coordinator", "San Francisco", 28, "something else" },
        new List<object>{ "Shad Decker", "Regional Director", "Edinburgh"},
    };

    Simple example with default format:

    ConsoleTableBuilder
        .From(tableData)
        .ExportAndWriteLine();

    More example with existing format Alternative:

    ConsoleTableBuilder
        .From(tableData)
        .WithFormat(ConsoleTableBuilderFormat.Alternative)
        .ExportAndWriteLine(TableAligntment.Center);

    Advance example with custom format using CharMap:

    ConsoleTableBuilder
        .From(tableData)
        .WithTitle("CONTACTS ", ConsoleColor.Yellow, ConsoleColor.DarkGray)
        .WithColumn("Id", "First Name", "Sur Name")
        .WithMinLength(new Dictionary<int, int> {
            { 1, 25 },
            { 2, 25 }
        })
        .WithTextAlignment(new Dictionary<int, TextAligntment>
        {
            {2, TextAligntment.Right }
        })
        .WithCharMapDefinition(new Dictionary<CharMapPositions, char> {
            {CharMapPositions.BottomLeft, '=' },
            {CharMapPositions.BottomCenter, '=' },
            {CharMapPositions.BottomRight, '=' },
            {CharMapPositions.BorderTop, '=' },
            {CharMapPositions.BorderBottom, '=' },
            {CharMapPositions.BorderLeft, '|' },
            {CharMapPositions.BorderRight, '|' },
            {CharMapPositions.DividerY, '|' },
        })
        .WithHeaderCharMapDefinition(new Dictionary<HeaderCharMapPositions, char> {
            {HeaderCharMapPositions.TopLeft, '=' },
            {HeaderCharMapPositions.TopCenter, '=' },
            {HeaderCharMapPositions.TopRight, '=' },
            {HeaderCharMapPositions.BottomLeft, '|' },
            {HeaderCharMapPositions.BottomCenter, '-' },
            {HeaderCharMapPositions.BottomRight, '|' },
            {HeaderCharMapPositions.Divider, '|' },
            {HeaderCharMapPositions.BorderTop, '=' },
            {HeaderCharMapPositions.BorderBottom, '-' },
            {HeaderCharMapPositions.BorderLeft, '|' },
            {HeaderCharMapPositions.BorderRight, '|' },
        })
        .ExportAndWriteLine(TableAligntment.Right);

    Check more demo here https://github.com/minhhungit/ConsoleTableExt/blob/master/Src/ConsoleTableApp/Program.cs

    Char Map Definition

    Header Char Map

    There are many ways to contribute to ConsoleTableExt, either contribute issue/code directly or buy me a cup of coffee

    Buy Me a Coffee at ko-fi.com

    Inspired by