格式正确的文本输出到.txt文件

时间:2014-01-02 06:15:08

标签: c#

我将一些数据导出到.txt文件中,如下所示:

String content;
String path=@"e:\coding\";
String name="test.txt";
path+=name;

System.IO.File.Delete(path);

 for (i=0;i<row-1;i++)
 {
     try
     {
         if (r[i].points.Count() > 2)
         {
             content = "Route " + (i + 1).ToString() +"      Truck_id:"+trk[i].truck_name.ToString()+   "       Max_load="+trk[i].capacity.ToString()+ "\n";
             System.IO.File.AppendAllText(path, content + Environment.NewLine);
             System.IO.File.AppendAllText(path, "Points     Load        Reached_AT                         Max_load" + Environment.NewLine);
             System.IO.File.AppendAllText(path, "========================================" + Environment.NewLine);
             for (int j = 0; j < (r[i].points.Count()); j++)
             {
                 content = r[i].points[j].ToString() + "          " + c[r[i].points[j]].load.ToString() +"          "+ r[i].time_list[j].ToString()+"                               "+c[r[i].points[j]].max_load.ToString()+"\n";
                 System.IO.File.AppendAllText(path, content + Environment.NewLine);
             }
             content = "Total     " + r[i].ld.ToString() + "\n";
             System.IO.File.AppendAllText(path, content + Environment.NewLine );
             content = "Route Complete: " + r[i].reach_at.ToString();
             System.IO.File.AppendAllText(path, content + Environment.NewLine+Environment.NewLine);
         }
     }

     catch (IndexOutOfRangeException e)
     {
         break;
     }
 }

正如所料,我得到的输出格式不正确: 这些空间导致文本混乱而没有排列。我的声誉不允许我发布截图,但我想可以理解发生了什么。

是否有办法使文本格式整齐排列,而不会看起来混乱。

2 个答案:

答案 0 :(得分:1)

如果您需要文字,可以使用标签:

System.IO.File.AppendAllText(path, "Points\t\tLoad\t\tReached_AT\t\tMax_load" + Environment.NewLine);
// ...
content = r[i].points[j].ToString() + "\t\t " + c[r[i].points[j]].load.ToString() +"\t\t"+ r[i].time_list[j].ToString()+"\t\t"+c[r[i].points[j]].max_load.ToString()+"\n";

只需使用大量标签(\t为一个,\t\t为两个,等等...)。希望它可以提供帮助。

另一种解决方案是使用逗号:

System.IO.File.AppendAllText(path, "Points,Load,Reached_AT,Max_load" + Environment.NewLine);

并保存为CSV文件(comma-separated values)。然后,您可以将数据导入Microsoft Excel或其他软件。

答案 1 :(得分:0)

你可以找到很多关于如何格式化The format item MSDNstring内容但是快速回答的好信息,一个字符串示例

content = "Route " + (i + 1).ToString() + "      Truck_id:" + trk[i].truck_name.ToString() + "       Max_load=" + trk[i].capacity.ToString() + "\n";

如果我们假设,
i最多10位数,
Truck_name最多45个字符
capacity最多10位数

content = String.Format("{0,-20}{1,55}{2,20} " + Environment.NewLine, "Route " + (i + 1).ToString(), " Truck_id:" + trk[i].truck_name.ToString(), " Max_load=" + trk[i].capacity.ToString());