3

我使用代码在 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那么它不会正确导出,因为单元格值中有逗号,但我需要在值中包含逗号。它应该正确导出。我怎么能去做 ?我尝试用双引号和单引号将该值括起来,但它不起作用。

4

2 回答 2

10

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

于 2011-03-21T11:23:13.093 回答
3

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

         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) ;
             }
         }
于 2011-03-21T11:09:06.520 回答