Hay varios paquetes de NuGet que pueden ayudar con el formato. En algunos casos, las capacidades de string.Format
son suficientes, pero es posible que desee cambiar automáticamente el tamaño de las columnas según el contenido, al menos.
ConsoleTableExt
ConsoleTableExt es una biblioteca simple que permite formatear tablas, incluidas tablas sin líneas de cuadrícula. (Un paquete ConsoleTables más popular no parece admitir tablas sin bordes ). A continuación, se muestra un ejemplo de cómo dar formato a una lista de objetos con columnas de tamaño según su contenido:
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
Si necesita más funciones que eso, cualquier formateo de consola se puede lograr con CsConsoleFormat . † Por ejemplo, aquí se formatea una lista de objetos como una cuadrícula con un ancho de columna fijo de 10, como en las otras respuestas usando 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)
})
)
));
Puede parecer más complicado que puro string.Format
, pero ahora se puede personalizar. Por ejemplo:
Si desea ajustar automáticamente el tamaño de las columnas según el contenido, reemplácelo AddColumns(10, 10, 10, 10, 10)
con AddColumns(-1, -1, -1, -1, -1)
( -1
es un acceso directo a GridLength.Auto
, tiene más opciones de tamaño, incluido el porcentaje del ancho de la ventana de la consola).
Si desea alinear las columnas numéricas a la derecha, agréguelas { Align = Right }
al inicializador de una celda.
Si desea colorear una columna, agréguela { Color = Yellow }
al inicializador de una celda.
Puede cambiar estilos de borde y más.
† CsConsoleFormat fue desarrollado por mí.