У меня есть приложение для перевода контента. По сути, пользователь использует текстовый редактор 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(",", "'");
Это очень хорошо работает при экспорте и все еще может быть понято и обработано текстовым редактором 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]);
}
}
Мысли о том, как сохранить содержимое в виде единого блока, а не разбивать его или как-либо ограничивать его?
Заранее спасибо!