Існує кілька пакетів NuGet, які можуть допомогти з форматуванням. У деяких випадках можливостей string.Format
є достатньо, але можливо, ви захочете автоматично встановити розмір стовпців на основі принаймні вмісту.
ConsoleTableExt
ConsoleTableExt - це проста бібліотека, яка дозволяє форматувати таблиці, включаючи таблиці без рядків сітки. (Більш популярний пакет ConsoleTables , схоже, не підтримує таблиці без полів.) Ось приклад форматування списку об’єктів із розмірами стовпців на основі їх вмісту:
ConsoleTableBuilder
.From(orders
.Select(o => new object[] {
o.CustomerName,
o.Sales,
o.Fee,
o.Value70,
o.Value30
})
.ToList())
.WithColumn(
"Customer",
"Sales",
"Fee",
"70% value",
"30% value")
.WithFormat(ConsoleTableBuilderFormat.Minimal)
.WithOptions(new ConsoleTableBuilderOption { DividerString = "" })
.ExportAndWriteLine();
CsConsoleFormat
Якщо вам потрібно більше функцій, ніж це, будь-яке форматування консолі можна досягти за допомогою CsConsoleFormat . † Наприклад, ось форматування списку об’єктів як сітки з фіксованою шириною стовпця 10, як у інших відповідях, використовуючи string.Format
:
ConsoleRenderer.RenderDocument(
new Document { Color = ConsoleColor.Gray }
.AddChildren(
new Grid { Stroke = LineThickness.None }
.AddColumns(10, 10, 10, 10, 10)
.AddChildren(
new Div("Customer"),
new Div("Sales"),
new Div("Fee"),
new Div("70% value"),
new Div("30% value"),
orders.Select(o => new object[] {
new Div().AddChildren(o.CustomerName),
new Div().AddChildren(o.Sales),
new Div().AddChildren(o.Fee),
new Div().AddChildren(o.Value70),
new Div().AddChildren(o.Value30)
})
)
));
Це може виглядати складніше, ніж чисто string.Format
, але тепер його можна налаштувати. Наприклад:
Якщо ви хочете автоматично встановити розмір стовпців на основі вмісту, замініть AddColumns(10, 10, 10, 10, 10)
на AddColumns(-1, -1, -1, -1, -1)
( -1
це ярлик GridLength.Auto
, у вас є більше параметрів розміру, включаючи відсоток ширини вікна консолі).
Якщо ви хочете вирівняти числові стовпці праворуч, додайте { Align = Right }
до ініціалізатора комірки.
Якщо ви хочете забарвити стовпець, додайте { Color = Yellow }
до ініціалізатора комірки.
Ви можете змінити стилі меж та багато іншого.
† CsConsoleFormat був розроблений мною.