我使用代码导出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就不能正确导出,因为单元格值中有逗号,但我需要在值中包含逗号。它应该正确导出。我怎样才能做到这一点 ?我尝试用双引号和单引号括起该值,但它不起作用。
答案 0 :(得分:10)
分隔逗号和开头双引号之间的空格可能会导致CSV出现问题。使用"val1", "val2"
替换csv文件中的"val1","val2"
代码。这应该可以解决你的问题。
答案 1 :(得分: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) ;
}
}