Добавление двойной кавычки в datarow после конвертации в csv файлы - PullRequest
0 голосов
/ 07 ноября 2019

Мне удается преобразовать все мои данные из 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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2019
            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");

При этом все ваши данные будут иметь "" | "". Благодаря.

0 голосов
/ 07 ноября 2019

Похоже, у вас есть дополнительный пробел здесь: sData.Contains (",")

Должно быть:

sData.Contains (",")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...