{"id":22598625,"url":"https://github.com/thiagomvas/sharptables","last_synced_at":"2026-02-05T12:34:03.764Z","repository":{"id":246378358,"uuid":"820962158","full_name":"thiagomvas/SharpTables","owner":"thiagomvas","description":"Draw customizable tables and graphs in the console quickly and cleanly","archived":false,"fork":false,"pushed_at":"2024-08-10T11:45:06.000Z","size":139,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-05T22:04:00.505Z","etag":null,"topics":["cli","console","contributions-welcome","csharp","customizable","data-visualization","graph","library","tables","visualization"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thiagomvas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-06-27T14:23:12.000Z","updated_at":"2024-08-10T11:45:11.000Z","dependencies_parsed_at":"2024-06-27T17:45:02.205Z","dependency_job_id":"402fa110-23c6-4290-b09e-9e7d1a0e2942","html_url":"https://github.com/thiagomvas/SharpTables","commit_stats":null,"previous_names":["thiagomvas/sharptables"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/thiagomvas/SharpTables","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagomvas%2FSharpTables","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagomvas%2FSharpTables/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagomvas%2FSharpTables/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagomvas%2FSharpTables/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thiagomvas","download_url":"https://codeload.github.com/thiagomvas/SharpTables/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagomvas%2FSharpTables/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29121786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T10:47:47.471Z","status":"ssl_error","status_checked_at":"2026-02-05T10:45:08.119Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","console","contributions-welcome","csharp","customizable","data-visualization","graph","library","tables","visualization"],"created_at":"2024-12-08T11:06:27.580Z","updated_at":"2026-02-05T12:34:03.745Z","avatar_url":"https://github.com/thiagomvas.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SharpTables\nA versatile and customizable console table formatter. Generate tables ready to be written to console with the ability to customize even the characters used by the generator to generate the table.\n\n## Example usage\nFor an example program, see [Example](https://github.com/thiagomvas/SharpTables/blob/master/SharpTables.Examples/Program.cs). Do keep in mind not all of the functionality is included in it.\n### Basic table\n```cs\nusing SharpTables;\n\nFormatting f = Formatting.Minimalist;\n\nobject[,] dataset = new object[,]\n{\n    { \"Name\", \"Age\", \"City\" },\n    { \"John Doe\", 42, \"New York\" },\n    { \"Jane Doe\", 36, \"Chicago\" },\n    { \"Joe Bloggs\", 25, \"Los Angeles\" },\n    { \"Jenny Smith\", 28, \"Miami\" }\n};\n\nTable table = Table.FromDataSet(dataset) // Also supports IEnumerable\u003cIEnumerable\u003cT\u003e\u003e\n    .AddRow(new Row(\"Jimmy Jones\", null, \"Las Vegas\")) // Supports nullables and manually adding rows\n    .UseNullOrEmptyReplacement(\"N/A\")\n    .UsePreset(cell =\u003e cell.Color = cell.IsNumeric ? ConsoleColor.Yellow : ConsoleColor.White);\n\ntable.Print();\n\n/*\n Name             Age      City\n────────────────────────────────────────────\n John Doe         42       New York\n\n Jane Doe         36       Chicago\n\n Joe Bloggs       25       Los Angeles\n\n Jenny Smith      28       Miami\n\n Jimmy Jones      N/A      Las Vegas\n*/\n```\n\n### Custom Formatting\nThe ``Formatting`` class already has some presets, you can also modify them using ``with`` due to them being ``record`` types, or make your own instance. By default, using ``new Formatting()`` will use ``Formatting.Default``\n\n```cs\n\n// Using the power of records!\nFormatting format = Formatting.ASCII with \n{ \n\tDividerColor = ConsoleColor.DarkGray,\n\tBottomLeftDivider = '@',\n\tBottomRightDivider = '@',\n\tTopLeftDivider = '@',\n\tTopRightDivider = '@',\n\tMiddleDivider = '%',\n\tHeader = Formatting.ASCII.Header with { Separated = true, }\n};\n/*\n+----------------+--------+----------------+\n|Name            |Age     |City            |\n+----------------+--------+----------------+\n@----------------+--------+----------------@\n|John Doe        |42      |New York        |\n+----------------%--------%----------------+\n|Jane Doe        |36      |Chicago         |\n+----------------%--------%----------------+\n|Joe Bloggs      |25      |Los Angeles     |\n+----------------%--------%----------------+\n|Jenny Smith     |28      |Miami           |\n+----------------%--------%----------------+\n|Jimmy Jones     |N/A     |Las Vegas       |\n@----------------+--------+----------------@\n*/\n```\n\n### Cell Formatting\nYou can also use cell-specific formatting, which can be used to change how the cell will look like in the table.\n\n```cs\n\nList\u003cFoo\u003e foos = new List\u003cFoo\u003e\n{\n\tnew Foo { A = 1, B = \"Hello\", C = true },\n\tnew Foo { A = 2, B = \"World\", C = false },\n\tnew Foo { A = 3, B = \"Something\", C = true },\n};\n\n// 'c' represents any cell in the table\ntable.UsePreset(c =\u003e\n{\n\tif (bool.TryParse(c.Text, out bool b))\n\t{\n\t\tc.Text = b ? \"V\" : \"X\";\n\t\tc.Alignment = Alignment.Center;\n\t\tc.Color = b ? ConsoleColor.Green : ConsoleColor.Red;\n\t}\n\tif (int.TryParse(c.Text, out int i))\n\t{\n\t\tc.Color = ConsoleColor.Yellow;\n\t\tc.Padding = 0;\n\t\tc.Alignment = Alignment.Right;\n\t}\n});\n/*\nThe result is colored on console.\n╔═══════════╦══════════════╦════╗\n║ Is Active ║     Name     ║ ID ║\n╠═══════════╬══════════════╬════╣\n│     V     │Hello         │   1│\n├───────────┼──────────────┼────┤\n│     X     │World         │   2│\n├───────────┼──────────────┼────┤\n│     V     │Something     │   3│\n└───────────┴──────────────┴────┘\n*/\n```\n\n## Contributing\nIf you found a bug, have any questions, want to implement your own additions or contribute in any other way, feel free to open a pull request!\n\n## License\nThis project is licensed under the MIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagomvas%2Fsharptables","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthiagomvas%2Fsharptables","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagomvas%2Fsharptables/lists"}