C# 如何在C中用漂亮的表格格式表示数据?
我编写了以下代码来显示数据C# 如何在C中用漂亮的表格格式表示数据?,c#,.net,botframework,string.format,C#,.net,Botframework,String.format,我编写了以下代码来显示数据 connection.Open(); SqlDataReader reader = command.ExecuteReader(); result += "--------------------------------------------------------------------------------------------------------\n\n"; result += "Product Name\t|\tCost Price\t|\tSold
connection.Open();
SqlDataReader reader = command.ExecuteReader();
result += "--------------------------------------------------------------------------------------------------------\n\n";
result += "Product Name\t|\tCost Price\t|\tSold Quantity\t|\tSales Amount\t|\tNet Amount\t|\tProfit\t|\tSale Date\n\n";
result += "--------------------------------------------------------------------------------------------------------\n\n";
while (reader.Read())
{
result += String.Format("{0}\t|\t{1}\t|\t{2}\t|\t{3}\t|\t{4}\t|\t{5}\t|\t{6:d}\n\n", reader[0], reader[1], reader[2], reader[3], reader[4], reader[5], reader[6]);
}
result += "--------------------------------------------------------------------------------------------------------\n\n";
reader.Close();
并且,它将数据显示为:
如何改进它以正确显示?我假设这是一个控制台应用程序,因此不可能使用datagrid 因此,您需要计算出每个字段的大小,然后对于适当的数据,您需要将字符串填充到正确的长度 根据数据类型,您可能需要向左或向右填充 为了帮助你,你可以使用
String.PadLeft
String.PadRight
微软网站有更多关于这方面的细节
下面是一个示例,您可能需要稍微调整代码
string[] fields = new string[] { "Product Name", "Cost Price", "Sold Quantity", "Sales Amount", "Net Amount", " Profit", "Sale Date" };
StringBuilder sb = new StringBuilder();
string fieldSeperator = "\t|";
foreach (String h in fields)
sb.Append(h + fieldSeperator);
sb.Append(Environment.NewLine);
while (reader.Read())
{
foreach(string fieldName in fields)
{
switch (fieldName)
{
case "Product Name": sb.Append(reader[0].PadRight(fieldName.Length));
break;
case "Cost Price": sb.Append(reader[1].PadRight(fieldName.Length));
break;
case "Sold Quantity": sb.Append(reader[2].PadRight(fieldName.Length));
break;
case "Sales Amount": sb.Append(reader[3].PadRight(fieldName.Length));
break;
case "Net Amount": sb.Append(reader[4].PadRight(fieldName.Length));
break;
case " Profit": sb.Append(reader[5].PadRight(fieldName.Length));
break;
case "Sale Date": sb.Append(reader[6].PadRight(fieldName.Length));
break;
}
sb.Append(fieldSeperator);
}
sb.Append(Environment.NewLine);
}
result = sb.ToString();
请注意,我使用了StringBuilder,因为这样会更好
这假定字段名较长或与数据大小相同。如果这不是你的利润领域发生的情况,那么这会稍微改变格式。因此,在本例中,我在字段名前面添加了一个额外的空格,我在switch语句中也需要这个空格。为什么不使用datagridView或任何其他控件来实现此目的?改进对您意味着什么?你能说得更具体些吗?查看所有不同格式的字符串,我希望数据作为字符串发送到MicrosoftBot框架中的聊天机器人上显示。为了改进方法,我希望它看起来像一个表,这样每个字符串都应该像在一个单元格中一样出现。它的可能副本在控制台窗口上工作正常,但在bot框架上不会呈现