Streamwriter разделяет все запятые, и мне нужно остановить его - PullRequest
0 голосов
/ 18 июня 2019

У меня есть приложение для перевода контента. По сути, пользователь использует текстовый редактор Summernote для добавления контента (HTML) в систему. Затем они могут запросить перевод, загрузив CSV-файл со всей информацией в нем, чтобы отправить переводчику. Когда мы получим его от переводчика, мы загрузим CSV-файл, содержащий переводы.

Проблема 1: Некоторые столбцы основаны на содержимом и содержат запятые. Тот же контент также в формате HTML. Таким образом, вы можете иметь:

<p style: "color: blue;"> I am a test, and I like to cause problems </p>

Проблема 2: Когда я повторно импортирую файл, он разделяется точкой с запятой. Так что все в линейном стиле разбиты.

Код для создания CSV:

Response.ContentType = "text/plain";
Response.AddHeader("content-disposition", "attachment;filename=" + downloadName);
Response.Clear();
   using (StreamWriter contentWriter = new StreamWriter(Response.OutputStream, Encoding.UTF8))
   {
       contentWriter.WriteLine("Application ID, English ID, Title, Application, Content, Translate To, TRANSLATE HERE, Requested By, Request Date");

                foreach (translation_contents content in toBeTranslatedContents)
                {
                    Guid parentKey = content.translation_contentid;
                    string title = string.Format(" \"{0} \" ", content.ContentTitle);
                    string englishContent = string.Format(" \"{0} \" ", content.Content);


                    contentWriter.WriteLine(applicationKey + "," + parentKey + "," + title + "," + applicationName + "," + englishContent + "," + newLanguage + "," + englishContent + "," + requestedBy + "," + requestDate);
                }
     }

      Response.End();

Что я пробовал:

string englishContent = string.Format(" \"{0} \" ", content.Content);

Все говорили, что это должно работать. Фактически, это добавляет кавычки вокруг содержания. Тем не менее, он по-прежнему разделяется запятыми. Поэтому я получу две колонки, такие как

столбец 1: «Я тест
Кол 2: и мне нравится создавать проблемы "

Там, где есть кавычки, но они все еще разбиты. Я тоже попробовал:

string englishContent = content.Content.Replace(",", "&apos;");

Это очень хорошо работает при экспорте и все еще может быть понято и обработано текстовым редактором SummerNote. Проблема заключается в том, что когда я повторно импортирую его, точки с запятой приводят к хаосу и разбивают содержимое на 5-10 столбцов, а не на один полный фрагмент содержимого.

Код для импорта:

using (StreamReader fileReader = new StreamReader(path))
{
    List<string> listA = new List<string>();
    while (!fileReader.EndOfStream)
    {
        var line = fileReader.ReadLine();
        var values = line.Split(';');

         listA.Add(values[0]);
     }
  }

Мысли о том, как сохранить содержимое в виде единого блока, а не разбивать его или как-либо ограничивать его?

Заранее спасибо!

1 Ответ

0 голосов
/ 25 июня 2019

Ответ Панагиотиса Канавоса решил мою проблему. Используя CSVhelper, я смог с легкостью экспортировать и импортировать CSV.

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