You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#控制台应用中读取CSV后带表头打印DataTable?

没问题,我来帮你搞定在C#控制台里带表头打印DataTable的需求!下面分两种方案给你实现,一种是美观对齐的版本,另一种是快速简易的版本,你可以根据需求选择:

在C#控制台应用中带表头打印DataTable

方案一:美观对齐版(推荐)

这个版本会自动计算每列的最大宽度,让表头和数据整齐对齐,控制台输出看起来更清爽:

string csv_file_path = @"C:\Users\files\LP.csv";
DataTable csvData = GetDataTabletFromCSVFile(csv_file_path);

// 第一步:计算每列的最大宽度(表头名 + 所有行数据的最长值)
List<int> columnWidths = new List<int>();
foreach (DataColumn col in csvData.Columns)
{
    // 先取列名的长度作为初始值
    int maxWidth = col.ColumnName.Length;
    // 遍历所有行,找到该列最长的数据长度
    foreach (DataRow row in csvData.Rows)
    {
        string cellContent = row[col].ToString();
        if (cellContent.Length > maxWidth)
        {
            maxWidth = cellContent.Length;
        }
    }
    // 加2个字符的边距,避免内容挤在一起
    columnWidths.Add(maxWidth + 2);
}

// 第二步:打印表头
for (int i = 0; i < csvData.Columns.Count; i++)
{
    // 用PadRight填充空格,保证列宽一致
    Console.Write(csvData.Columns[i].ColumnName.PadRight(columnWidths[i]));
}
Console.WriteLine();

// 第三步:打印表头分隔线
foreach (int width in columnWidths)
{
    Console.Write(new string('-', width));
}
Console.WriteLine();

// 第四步:打印每一行数据
foreach (DataRow row in csvData.Rows)
{
    for (int i = 0; i < csvData.Columns.Count; i++)
    {
        string cellContent = row[i].ToString();
        Console.Write(cellContent.PadRight(columnWidths[i]));
    }
    Console.WriteLine();
}

Console.ReadLine();

代码说明

  • 列宽计算:自动适配表头和所有数据的最长长度,避免某列内容太长导致排版混乱
  • 对齐处理:用PadRight()方法统一每个单元格的宽度,输出整齐有序
  • 分隔线:用短横线区分表头和数据,结构更清晰

方案二:快速简易版

如果只是临时调试查看数据,不需要特别美观,可以用制表符分隔,实现起来更快:

string csv_file_path = @"C:\Users\files\LP.csv";
DataTable csvData = GetDataTabletFromCSVFile(csv_file_path);

// 打印表头
foreach (DataColumn col in csvData.Columns)
{
    Console.Write(col.ColumnName + "\t");
}
Console.WriteLine();

// 打印数据行
foreach (DataRow row in csvData.Rows)
{
    foreach (var cellItem in row.ItemArray)
    {
        Console.Write(cellItem.ToString() + "\t");
    }
    Console.WriteLine();
}

Console.ReadLine();

这个版本用制表符分隔列,虽然对齐效果可能不如第一个方案,但代码更简洁,适合快速验证数据。

内容的提问来源于stack exchange,提问作者user9470599

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:04:10