C# 控制檯中展示表格
有時我們需要在控制檯程序中以表格的形式展示數據,剛好有一個叫ConsoleTable的第三方庫可以實現,使用這個庫,可以讓開發人員很輕鬆的將一組對象以表格的形式展示在控制檯中。而且這個庫寫的非常簡潔,只有一個cs文件,我讀了源代碼,確實寫得水平非常高。
Have you ever just wanted to output flat structured POCO out to console? Sure you have! This class will let you print a nicely formatted table right to your console as easily as possible.
1. ConsoleTable 安裝及使用
ConsoleTables GitHub項目地址:ConsoleTables
我們可以通過NuGet來安裝,執行命令或者用vs的NuGet管理控制檯來完成安裝。
Install-Package ConsoleTables -Version 2.4.1
引用命名空間 using ConsoleTables;後即可使用。
2. 以特定格式打印表格
用ConsoleTables類庫打印表格可以有三種形式,分別是默認格式,markdown格式,以及交替格式和最簡格式。下面舉例說明。
var table = new ConsoleTable("one", "two", "three");
table.AddRow(1, 2, 3)
.AddRow("this line should be longer", "yes it is", "oh");
// 默認格式的表格
Console.WriteLine("\nFORMAT: Default:\n");
table.Write();
// Markdwon格式的表格
Console.WriteLine("\nFORMAT: MarkDown:\n");
table.Write(Format.MarkDown);
// 交替格式的表格
Console.WriteLine("\nFORMAT: Alternative:\n");
table.Write(Format.Alternative);
Console.WriteLine();
// 最簡格式的表格
Console.WriteLine("\nFORMAT: Minimal:\n");
table.Write(Format.Minimal);
Console.WriteLine();
// 以表格形式展示
table = new ConsoleTable("I've", "got", "nothing");
table.Write();
Console.WriteLine();
- 運行效果截圖:
3. 將對象打印成表格
也可將可枚舉的對象打印成表格,下面舉例如下。
- 先創建一個可枚舉的對象,我們按照官方的實例來。
public class Something
{
public Something()
{
Id = Guid.NewGuid().ToString("N");
Name = "Khalid Abuhkameh";
Date = DateTime.Now;
}
public string Id { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public int NumberOfChildren { get; set; }
}
- 打印可枚舉的對象
// 打印10行數據
var rows = Enumerable.Repeat(new Something(), 10);
ConsoleTable.From<Something>(rows).Write();
// 打印0行數據
rows = Enumerable.Repeat(new Something(), 0);
ConsoleTable.From<Something>(rows).Write();
- 執行效果截圖
4. 配置表格格式的參數
我們還可以配置表格的格式,比如第2列數據靠右對齊,配置是否顯示錶格行數等。
// 配置 NumberAlignment 列數據右居中
Console.WriteLine("\nNumberAlignment = Alignment.Right\n");
rows = Enumerable.Repeat(new Something(), 2);
ConsoleTable
.From(rows)
.Configure(o => o.NumberAlignment = Alignment.Right)
.Write();
// 配置不顯示錶格的行數
var noCount =
new ConsoleTable(new ConsoleTableOptions
{
Columns = new[] { "one", "two", "three" },
EnableCount = false
});
noCount.AddRow(1, 2, 3).Write();
- 執行效果截圖