【问题标题】:Export c# array to csv file with title将 c# 数组导出到带有标题的 csv 文件
【发布时间】:2015-07-25 20:03:04
【问题描述】:

我尝试将二维数组从 c# 导出到 csv 文件,但 csv 文件中缺少最后几行。我不知道问题出在我的代码中。

首先,我想知道我的代码是否不正确?

其次,是否可以为csv文件中的每一行添加一个标题。

提前致谢

这是我在 c# 中的数组示例

 string[,] array=new string[]{{2000,2},{2001,4}}

我想在带有标题的 csv 文件中得到这样的结果

  Date   C1
  2000   2
  2001   4

我的代码:

 var outfile=new.streamwriter(@"fileadress.csv");
 for(int i=0;i<array.GetUpperbound(0);i++)
 {
   string content="";
  for(int j=0;j<array.GetUpperbound(1);j++)
   {
     content+= array[i,j]+";";
   }
  outfile.WriteLine(content);

 }

【问题讨论】:

  • StreamWriters 是IDisposable,所以你应该在完成后Dispose()他们...
  • 你的例子也不是有效的 C#

标签: c# arrays csv


【解决方案1】:

显示的代码有很多问题。最重要的是错误使用 GetUpperBound 返回数组的“上限”,而您的示例这个上限是 1(不是 2),因此 &lt; array.UpperBound 跳过了数组中的最后一个位置。

我建议以这种方式修改您的代码

// This is an array of strings right?
string[,] array=new string[,]{{"2000","2"},{"2001","4"}};

// Use a StringBuilder to accumulate your output
StringBuilder sb = new StringBuilder("Date;C1\r\n");
for (int i = 0; i <= array.GetUpperBound(0); i++)
{
    for (int j = 0; j <= array.GetUpperBound(1); j++)
    {
         sb.Append((j==0 ? "" : ";") + array[i, j]);        
    }
    sb.AppendLine();
}

// Write everything with a single command 
File.WriteAllText(@"fileadress.csv", sb.ToString());

【讨论】:

  • File.WriteAllText(@"fileadress.csv", sb.ToString());
  • 是的,改了,你能刷新一下答案吗?
  • 我在我的程序中测试了它。但它说文件不存在。我想问你这个问题,但后来我发现我错过了using System.IO。我的评论是错误的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 2020-01-01
  • 2020-07-01
  • 1970-01-01
相关资源
最近更新 更多