Streamwriter 由所有逗号分隔,我需要它停止
Streamwriter is delimiting by all commas and I need it to stop
我有一个 'translate content' 应用程序。基本上,用户使用 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);
一切都表明这应该有效。事实上,它确实在内容周围添加了引号。但是,它仍然以逗号分隔。所以我会得到两列,例如
col 1: "I am a test
col 2: and I like to cause problems"
引号在那里,但它仍然被分解。我也试过:
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]);
}
}
关于如何将内容保持为单个块而不以任何方式将其分解或分隔的想法?
提前致谢!
Panagiotis Kanavos 的回答解决了我的问题。使用 CSVhelper,我能够轻松地导出和导入 CSV。
我有一个 'translate content' 应用程序。基本上,用户使用 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);
一切都表明这应该有效。事实上,它确实在内容周围添加了引号。但是,它仍然以逗号分隔。所以我会得到两列,例如
col 1: "I am a test
col 2: and I like to cause problems"
引号在那里,但它仍然被分解。我也试过:
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]);
}
}
关于如何将内容保持为单个块而不以任何方式将其分解或分隔的想法?
提前致谢!
Panagiotis Kanavos 的回答解决了我的问题。使用 CSVhelper,我能够轻松地导出和导入 CSV。