서식 지정에 도움이되는 여러 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 을 사용하여 콘솔 서식을 지정할 수 있습니다 . † 예를 들어 string.Format
다음을 사용하는 다른 답변에서와 같이 10의 고정 열 너비를 가진 그리드로 개체 목록의 서식을 지정합니다 .
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)
})
)
));
pure보다 복잡해 보일 수 string.Format
있지만 이제 사용자 정의 할 수 있습니다. 예를 들면 :
당신은 내용에 따라 자동으로 크기 열에 원하는 경우, 교체 AddColumns(10, 10, 10, 10, 10)
로 AddColumns(-1, -1, -1, -1, -1)
( -1
바로 가기입니다 GridLength.Auto
, 당신이 더 많은 콘솔 창 너비의 비율을 포함, 옵션 크기 조정했다).
숫자 열을 오른쪽으로 정렬 { Align = Right }
하려면 셀의 이니셜 라이저에 추가하십시오 .
열에 색상 { Color = Yellow }
을 지정하려면 셀의 이니셜 라이저에 추가하십시오 .
테두리 스타일 등을 변경할 수 있습니다.
† CsConsoleFormat은 제가 개발했습니다.