转换为CSV文件后在数据行中添加双引号

我设法将所有数据从SharePoint转换为CSV并将其保存到本地环境中。我想念一下它,发现我的数据中有一个逗号,这在我的csv中创建了新行。

这是我的CSV结果的输出。

0|1|2|3|4
0|1|2,3|4|5

我已经尝试删除逗号,并且被告知这不是一个好方法。在研究了StackOverFlow中的几个问题之后,我仍然停留在它上面。

    private static void ExportToCSV(DataTable dTblSPGroupUser,StreamWriter sw,clsReport rule,string sFileName,string strDelimiter)
    {
        try
        {
            foreach (DataRow dr in dTblSPGroupUser.Rows) // Now write all the rows.
            {
                var builder = new System.Text.StringBuilder();
                foreach (clsField metadataItems in rule.Indexing)
                {
                    if (!Convert.IsDBNull(dr[metadataItems.FieldName.ToString()]))
                    {
                        builder.Append(dr[metadataItems.FieldName.ToString()].ToString());
                    }
                    builder.Append(strDelimiter);
                }
                string sData = builder.ToString();
                sData = sData.Remove(sData.Length - 1);

                // This is part I try to check
                if (sData.Contains(","))
                {
                    sData = string.Format("\"{0}\"",sData);

                // What I should add here?
                } 

                    sw.Write(sData);
                    sw.Write(sw.NewLine);
                    //sData = ""; No need to clear after write newLine.
                }
                sw.Close();
                Log("File " + sFileName + " Closed");
            }
        catch (Exception ex)
        {
            Log(ex.ToString());
        }
    }

我尝试使用修剪和其他一些方法,但似乎失败了。因为我正在逐行阅读,所以我可以在其中添加双列。是的,我确实相信此网站有数百种解决方案,但是我找不到1个可以解决我的问题的解决方案。请提出建议。

我的预期输出:-

0|1|2|3|4
0|1|"2,3"|4|5

谢谢。

alan0633 回答:转换为CSV文件后在数据行中添加双引号

这里似乎有多余的空间: sData.Contains(“,”)

应该是:

sData.Contains(“,”)

,
            var builder = new System.Text.StringBuilder("\"");
            foreach (clsField metadataItems in rule.Indexing)
            {
                if (!Convert.IsDBNull(dr[metadataItems.FieldName.ToString()]))
                {
                    builder.Append(dr[metadataItems.FieldName.ToString()].ToString());
                }
                builder.Append("\""+ strDelimiter +"\"");
            }

            string sData = builder.ToString();
            //sData = sData.Remove(sData.Length - 1);
            sData = sData.Remove(sData.Length - 1,1);

                sw.Write(sData);
                sw.Write(sw.NewLine);
            }
            sw.Close();
            Log("File " + sFileName + " Closed");

这将使您的所有数据都具有““ |”“。谢谢。

本文链接:https://www.f2er.com/3147972.html

大家都在问