Ответ на вопрос @McRonald в основном покрывает его, но не удастся для важных случаев краев.
Если у вас есть запятая или кавычка в любой строке, это испортит выход. Например, если вы имели CSV с колоннами LastName и FirstName, кто-то с суффиксом, как «младший» будет скидывать запятые:
LastName, FirstName
Smith, John
Baker, Jr, Fred
Я разработал метод расширения, который применяет любые необходимые спасаясь в строку, записывается в ячейку CSV файла (код может быть укороченным, но легче следовать, как написано):
static public class CsvExtensions
{
static public string CsvQuote(this string text)
{
if (text == null)
{
return string.Empty;
}
bool containsQuote = false;
bool containsComma = false;
bool containsNewline = false;
bool containsCR = false;
int len = text.Length;
for (int i = 0; i < len && (containsComma == false || containsQuote == false); i++)
{
char ch = text[i];
if (ch == '"')
{
containsQuote = true;
}
else if (ch == ',')
{
containsComma = true;
}
else if (ch == '\r')
{
containsCR = true;
}
else if (ch == '\n')
{
containsNewline = true;
}
}
bool mustQuote = containsComma || containsQuote || containsCR || containsNewline;
if (containsQuote)
{
text = text.Replace("\"", "\"\"");
}
if (mustQuote)
{
return "\"" + text + "\""; // Quote the cell and replace embedded quotes with double-quote
}
else
{
return text;
}
}
}
Вы бы разместить все, что код в своем собственном классе, а затем использовать его, как это (взяв строку кода из ответа @ McRonald's):
table += string.Join(",", a) + Environment.NewLine;
становится
table += string.Join(",", a.CsvQuote()) + Environment.NewLine;
' " "vis.model' должен быть'"," + vis.model'. Что именно не работает? Обратите внимание, что если у вас есть кавычки в тексте, вам нужно избегать его с двойной кавычкой (Ed «The Hacker» Jones => Ed »« The Hacker »« Jones », и если у вас есть запятые или символы новой строки в строке, вы должны указать эта ячейка (Ed, Jr => «Ed, Jr»). –
Хорошо, спасибо, Эрик, я сразу же дам вам снимок, я пытаюсь сохранить файл как csv, чтобы он мог распознавать запятую, и, таким образом, мои данные были в столбцах, а не просто сбрасывали все в одном столбце. – rigidboy
Принятый ответ в основном правильный, но также см. Также мой ответ для кода, который обрабатывает важные случаи краев. –