【问题标题】:How to export string with comma in the value in csv?如何在csv中的值中导出带逗号的字符串?
【发布时间】:2011-07-19 14:30:48
【问题描述】:

我使用代码导出 csv 文件中的 datagridview 记录:

using (StreamWriter myFile = new StreamWriter(filename, false, Encoding.Default))
{
        string sHeaders = "";
        for (int j = 0; j < dGV.Columns.Count; j++)
        {
             if (dGV.Columns[j].Visible)
             {
                 sHeaders = sHeaders.ToString() + dGV.Columns[j].HeaderText + ", "; 
             }
        }
        myFile.WriteLine(sHeaders);
        // Export data.  
        for (int i = 0; i < dGV.RowCount; i++)
        {
             string stLine = "";
             for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
             {
                 if (dGV.Columns[j].Visible)
                 {
                     stLine = stLine.ToString() + dGV.Rows[i].Cells[j].Value.ToString() + ", ";
                 }
             }
                        myFile.WriteLine(stLine);
        }
     }
  }

但问题是如果datagridviewcell中的值是Harikrishna,Daxini,那么它不会正确导出,因为单元格值中有逗号,但我需要在值中包含逗号。它应该正确导出。我怎样才能做到这一点 ?我尝试用双引号和单引号将该值括起来,但它不起作用。

【问题讨论】:

  • 双引号应该有效。逗号分隔和双引号之间有空格吗?
  • @Belinda,像这样 - “Harikrishna,Daxini”?
  • 我的意思是你输入你的值,比如"val1","val2""val1", "val2"。这可能会对 CSV 产生影响。
  • @Belinda,我写的像“val1”,“val2”。
  • 我的回答的简短版本我认为空格是你的问题。删除它们。

标签: c# export-to-csv


【解决方案1】:

包含“,”的值需要用双引号括起来进行转义。

         for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
         {
             if (dGV.Columns[j].Visible)
             {
                  var value = dGV.Rows[i].Cells[j].Value.ToString();
                  var append = value.Contains(",")
                                 ? string.Format("\"{0}\"", value)
                                 : value;
                  stLine = string.Format("{0}{1},", stLine, append) ;
             }
         }

【讨论】:

  • 我试过了,但它不像 "\"" +|harikrishna,daxini + "\""。
  • @Harikrishna 这是用逗号导出值的正确方法。您如何阅读或使用您生成的 csv?也许正在读取您的 csv 的代码没有正确解析引用的数据字段?
  • 对不起,这不起作用,为什么我要检查,但这不起作用。
  • 只有一个问题,逗号前不应该有空格,它会起作用。
【解决方案2】:

分隔逗号和双引号之间的空格可能会导致 CSV 出现问题。将 csv 文件中的 "val1", "val2" 之类的代码替换为 "val1","val2"。这应该可以解决您的问题。

【讨论】:

  • 我不知道逗号之间的空格会这么重要。这解决了一个我一直在努力解决的问题,甚至难以描述。
猜你喜欢
  • 2011-03-03
  • 2017-05-07
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多