C# 如何在csv中导出值中带有逗号的字符串?
我使用以下代码导出csv文件中的datagridview记录:C# 如何在csv中导出值中带有逗号的字符串?,c#,export-to-csv,C#,Export To Csv,我使用以下代码导出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
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);
}
}
}
使用(StreamWriter myFile=newstreamwriter(文件名,false,Encoding.Default))
{
字符串sHeaders=“”;
对于(int j=0;j
但问题是,如果datagridviewcell中的值是Harikrishna,Daxini,那么它将无法正确导出,因为单元格值中有逗号,但我需要在值中包含逗号。它应该正确导出。我如何才能做到这一点?我尝试用双引号和单引号括住该值,但不起作用。包含“,”的值需要用双引号括起来进行转义
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) ;
}
}
for(int j=0;j
分隔逗号和开头双引号之间的空格可能会导致CSV问题。将csv文件中的“val1”、“val2”等代码替换为“val1”、“val2”
。这应该可以解决您的问题。双引号应该可以解决问题。分开的逗号和开头的双引号之间有空格吗?@Belinda,像这样——“Harikrishna,Daxini”?我的意思是你在键入你的值,比如“val1”,“val2”
或“val1”,“val2”
。这可能会对CSV产生影响。@Belinda,我写的是“val1”,“val2”。我的答案的简短版本我认为空格是你的问题。删除它们。我已经尝试过这个方法,但它不像“\”“+\124; harikrishna,daxini+”\”“。@harikrishna这是使用逗号导出值的正确方法。您如何阅读或使用生成的csv?可能读取csv的代码没有正确解析引用的数据字段?抱歉,但这不起作用,为什么我要检查,但这不起作用。唯一的问题是逗号前不应该有空格,它会起作用。我不知道逗号之间的空格会如此重要。这解决了我一直在努力解决的问题,甚至难以描述。