跳至頁尾內容
Iron Academy Logo
C#應用程式
C#應用程式

其他類別

向控制台新增表格 - Spectre Console 系列

[[academy-video-youtube({"vid": "jpCAgY5nqwc", "start_time": "0", "title": "Adding Tables to Your Console - Spectre Console Series", "creator": "Tim Corey", "length": "10m 24s"})]]

Spectre.Console 是一個強大的 .NET 程式庫,能幫助您建立出美觀的控制台應用程式。 您可以構建有結構的佈局,使用顏色,甚至顯示進度條或互動提示,而不僅僅是簡單的文字輸出。在他的 Spectre Console 系列中,Tim Corey 以簡單、實用的課程向開發者展示了如何充分利用這個程式庫。

在他的视频"Adding Tables to Your Console - Spectre Console Series"中,Tim 專注於 Spectre.Console 的表格。 表格是一個核心功能,可以讓您通過對齊、內邊距、邊框和樣式顯示結構化資料。 我們將更深入地了解 Tim 的逐步指南,以便您可以看到如何使用此功能。

開始使用 Spectre.Console

在開始時 (0:00),Tim 解釋了 Spectre.Console 是如何使您能夠建立具視覺吸引力且資訊豐富的應用程式。 它是作為名為 Spectre.Console 的 NuGet 套件分發的。 您可以輕鬆使用以下方式安裝它:

// dotnet add package spectre console
dotnet add package Spectre.Console
// dotnet add package spectre console
dotnet add package Spectre.Console

安裝後,這個程式庫可以讓您更容易在控制台應用程式中展示資訊。 Tim 也指出了影片中提供的文件和源程式碼連結,供任何對進一步範例感興趣的人參考。

建立您的第一個表格

Tim 在 0:35 開始編碼。他建立了一個 Table 物件:

var table = new Table();
var table = new Table();

然後他使用 AddColumn 新增了三個列:

table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");
table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");

這建立了基本結構。 他解釋說,每個欄位稍後可以有其自己的寬度、對齊和樣式。

接下來,他用 AddRow 新增行。 在 1:06,Tim 說有三種支持的方式來新增行:

  1. 一個 params 列表的 IRenderable 物件(用於像面板、另一個表格或甚至圖表之類的巢狀項目)。

  2. 一個 params 列表的字串(最常用)。

  3. 一個 IEnumerable<IRenderable>(不太常用但可用)。

他首先示範了第二個選擇,新增:

table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");
table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");

這在表格中插入了兩行資料。 在 3:26,Tim 提醒觀眾必須使用 AnsiConsole.Write(table)(而不是 WriteLine)來顯示像表格這樣的 IRenderable 在終端中:

AnsiConsole.Write(table);
AnsiConsole.Write(table);

當他運行程式時,控制台顯示了一個格式整齊的表格,表頭和行自動對齊。 即使只有幾行程式碼,Spectre 也使得控制台輸出看起來更加專業。

Spectre Console Adding Tables 1 related to 建立您的第一個表格

對齊和展開表格

在 4:00,Tim 展示了如何控制表格在螢幕上的位置。 例如:

table.Centered();
table.Centered();

這將在控制台窗口中央顯示整個表格。 他解釋說,此設置影響整個表格,而非欄位。 您還可以右對齊或左對齊表格。 預設是左對齊。

Spectre Console Adding Tables 2 related to 對齊和展開表格

他接著在 5:01 示範了 table.Expand(),這使得表格填滿整個終端窗口的寬度。 一旦展開,居中便沒有影響,因為表格已經佔據了所有可用空間。 預設是一個收縮的表格。

Spectre Console Adding Tables 3 related to 對齊和展開表格

新增邊框和了解終端支援

接下來,Tim 在 5:21 新增了一個邊框:

table.Border(TableBorder.Rounded);
table.Border(TableBorder.Rounded);

他在 Visual Studio 的控制台中運行應用程式,發現角落並未圓角。 在 5:54,他切換到 Windows Terminal 並再次運行——如今圓角出現了。

Tim 解釋道 (5:59) ,渲染能力取決於您正在使用的終端。 基礎的 shell 只是提供輸出,但終端決定了它能顯示哪些樣式。 Windows Terminal 支援圓角邊框字元; Visual Studio 的內建控制台則不支援。 同樣的,這適用於顏色、標記或您可能新增的任何斜體、下劃線或粗體文字樣式。

他於 7:01 展示,即使是 Visual Studio 外的開發者命令提示符也能正確呈現,因為它使用了一個不同的終端。 如果您嘗試使用 Spectre 功能如進度條、長時間任務或表格,這是一個需要記住的重要點:不是所有的終端都能顯示每種樣式。

新增行分隔符

Tim 也指出,您可以在行之間顯示分隔符以便更清晰:

table.ShowRowSeparators();
table.ShowRowSeparators();

這會在每行之間畫一條橫線,可能使得資訊在較大的表格中更容易掃描——特別是當您正在構建顯示大量輸出或動態處理參數的 CLI 工具時。

欄位級別樣式:內邊距、寬度、對齊

Spectre.Console 表格的一個優勢是您可以個別自訂每個欄位。 在 8:02,Tim 修改了第一個欄位:

table.Columns[0].PadLeft(5).PadRight(5);
table.Columns[0].PadLeft(5).PadRight(5);

這在文字的兩側新增了內邊距。 然後他在第二個欄位設置了固定寬度:

table.Columns[1].Width(15);
table.Columns[1].Width(15);

最後,他右對齊了該欄位的內容:

table.Columns[1].RightAligned();
table.Columns[1].RightAligned();

當他於 9:10 再次運行程式時,您可以看到第一個欄位有內邊距,第二個欄位設置為固定寬度,內容右對齊。 甚至連表頭文字都遵循這些設置。 Tim 注明 (8:42) 寬度是以字元而非像素來測量。

這些小細節——內邊距、對齊和固定寬度,使得您的控制台應用程式更易讀。 結合 Spectre 的顏色、標記和面板,您可以建立接近 GUI 的輸出,但完全在控制台中運行。

Spectre Console Adding Tables 4 related to 欄位級別樣式:內邊距、寬度、對齊

IEnumerable<IRenderable> 新增行

在 9:25,Tim 演示了新增行的第三種方式——傳遞一個 IEnumerable<IRenderable>。 他準備了一個 Text 物件的列表:

var person = new List<Text>
{
    new Text("Bilbo"),
    new Text("Baggins"),
    new Text("111")
};

table.AddRow(person);
var person = new List<Text>
{
    new Text("Bilbo"),
    new Text("Baggins"),
    new Text("111")
};

table.AddRow(person);

這使用一個集合插入了另一行。 Tim 評論說,這個選項在日常程式碼中不是非常實用,但如果您從另一個來源動態生成行(例如資料文件、單元測試框架或互動提示),則會有所支持。

Spectre Console Adding Tables 5 related to 從 IEnumerable<IRenderable> 新增行

總結

影片 的最後 (9:59),Tim 總結道:Spectre.Console 表格提供了大量的能力,讓您以整潔和結構化的方式呈現資訊。 您可以控制表格的對齊、寬度和邊框樣式,新增行分隔符,應用內邊距到欄位,甚至嵌入面板或其他可渲染物件。

因為這個程式庫深受現代 CLI 設計的啟發,它不僅支持表格,還支持用於長時間運行任務的進度指示器、圖表、標記(如粗體、斜體、下劃線和顏色(如藍色或綠色文字))等許多功能。 Tim 鼓勵觀眾查看文件並嘗試範例,以了解 Spectre 如何使您的控制台輸出更加引人注目。

通過遵循 Tim Corey 的逐步演示,您將看到 Spectre.Console 如何讓您以最小的努力構建美觀的控制台應用。 安裝 NuGet 套件,探索 API,並立即開始將簡單的控制台輸出轉變為結構化、樣式化的顯示。

Hero Worlddot related to 向控制台新增表格 - Spectre Console 系列
Hero Affiliate related to 向控制台新增表格 - Spectre Console 系列

分享您所愛以賺取更多報酬

您是否為使用 .NET、C#、Java、Python 或 Node.js 的開發者建立內容?將您的專業知識轉化為額外收入!

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話