IRONSOFTWAREHOME

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

Adding Tables to Your Console - Spectre Console Series

Tim Corey

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

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

建立您的第一個表格

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

var table = new Table();

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

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");

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

AnsiConsole.Write(table);

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

對齊和展開表格

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

table.Centered();

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

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

新增邊框和了解終端支援

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

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();

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

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

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

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

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

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

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

table.Columns[1].RightAligned();

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

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

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);

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

總結

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

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

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

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立