comma 和 comma 和有什么不一样?

What is the difference between comma and comma?

我必须将 DataTable 的内容保存到 CSV 文件中。在 DataTable 中一切正常,数据来自 SQL 查询。但是,如果我在 Excel 中打开 CSV,我可以看到:

+---------------------+---------------------+------------------------------+------+------+----+
|    DisplayName0     |     Publisher0      |             col3             | col4 | col5 |    |
+---------------------+---------------------+------------------------------+------+------+----+
| Dropbox             | Dropbox, Inc.       | 432                          |  415 |   17 |    |
| Chef Client v12.4.3 | Chef Software       | Inc. <maintainers@chef.io>"" |  193 |  180 | 13 |
| Cisco AnyConnect    | Cisco Systems, Inc. | 836                          |  824 |   12 |    |
+---------------------+---------------------+------------------------------+------+------+----+
'Dropbox, Inc.' -> 'Dropbox, Inc.' //this is good
'Cisco Systems, Inc.' -> 'Cisco Systems, Inc.' //this is good too
'"Chef Software, Inc. <maintainers@chef.io>"' -> 'Chef Software' and ' Inc. <maintainers@chef.io>""' //what happened here?

我用于将 DataTable 导出到 CSV 的好旧代码是:

System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(dlg3.FileName);

string strHeader = "";
for (int s = 0; s < tbl.Columns.Count; s++)
{
    strHeader += "\"" + tbl.Columns[s].ColumnName + "\",";
}
streamWriter.WriteLine(strHeader);

for (int m = 0; m < tbl.Rows.Count; m++)
{
    string strRowValue = "";
    for (int n = 0; n < tbl.Columns.Count; n++)
    {
        if (tbl.Rows[m][n].ToString() != "")
        {
            strRowValue += "\"" + tbl.Rows[m][n] + "\",";
        }
        else
        {
            strRowValue += tbl.Rows[m][n] + ",";
        }
    }
    streamWriter.WriteLine(strRowValue);
}
streamWriter.Close();

所以问题是为什么 dropbox 中的逗号不是 "generating" 新单元格,但在 chef 客户端中是?

那个字符串的和平被双引号。 您可以在添加之前检查字符串是否已准备好以引号开头和结尾。

if(!tbl.Rows[m][n].StartsWith("\"") && !tbl.Rows[m][n].EndsWith("\""))
strRowValue += tbl.Rows[m][n] + ",";
else
strRowValue += "\"" + tbl.Rows[m][n] + "\",";

问题数据后有双引号:""

看起来你的数据中可能有引号,然后你在输出数据时添加了引号,所以你最终在你的文件中得到了这个:

""Chef Software, Inc. <maintainers@chef.io>""