【问题标题】:How to print List as table in console application? [duplicate]如何在控制台应用程序中将列表打印为表格? [复制]
【发布时间】:2012-04-15 09:04:45
【问题描述】:

我需要在控制台应用程序中将列表打印为表格并以方便的格式预览的方法,如下所示:

Pom_No          Item_Code          ordered_qty                      received_qty

1011            Item_Code1         ordered_qty1                    received_qty1 

1011            Item_Code2         ordered_qty2                    received_qty2

1011            Item_Code3         ordered_qty3                    received_qty3

1012            Item_Code1         ordered_qty1                    received_qty1 

1012            Item_Code2         ordered_qty2                    received_qty2

1012            Item_Code3         ordered_qty3                    received_qty3

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    你的主要工具是

    Console.WriteLine("{0,5} {1,10} {2,-10}", s1, s2, s3);  
    

    ,5,10 是宽度说明符。使用负值左对齐。

    也可以格式化:

    Console.WriteLine("y = {0,12:#,##0.00}", y);
    

    或者是一个宽度为 24 和自定义格式的日期:

    String.Format("Now = {0,24:dd HH:mm:ss}", DateTime.Now);
    

    编辑,用于 C#6

    使用字符串插值,您现在可以编写

    Console.WriteLine($"{s1,5} {s2,10} {s3,-10}");  
    Console.WriteLine($"y = {y,12:#,##0.00}");
    

    您不再需要显式调用String.Format()

    string s = $"Now = {DateTime.Now,24:dd HH:mm:ss}" + ", " + $"y = {y,12:#,##0.00}" ;
    

    【讨论】:

    • +1。不知道这个技巧...
    • 感谢您的精彩回答 :)
    • 类似于String.Format
    • 如果有样本输出,这个答案会好很多
    • 第一个解决方案似乎不适用于 Debug.WriteLine。这是特定于 Console.WriteLine 的吗?
    【解决方案2】:

    您可以做的最简单的方法是使用existing library

    Install-Package ConsoleTables 
    

    然后你可以像这样定义你的表:

    ConsoleTable.From<Order>(orders).Write();
    

    它会给出这个输出

    | Id       | Quantity | Name              | Date                |
    |----------|----------|-------------------|---------------------|
    | 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
    | 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
    | 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
    | 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
    | 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
    

    或者定义一个自定义表格

    var table = new ConsoleTable("one", "two", "three");
    table.AddRow(1, 2, 3)
         .AddRow("this line should be longer", "yes it is", "oh");
    
    table.Write();
    

    更多示例请查看c# console table

    【讨论】:

    • 需要 .NET Standard 2.0 版本 ...
    【解决方案3】:

    使用 \t 插入制表符以分隔列

    【讨论】:

    • 只有当所有数据的长度(几乎)相同时,选项卡才会帮助您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2020-10-14
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多