2011-06-29 11 views
11

Chcę utworzyć jeden plik csv za pomocą C#.Jak zapisywać dane w wielu wierszach, ALE w obrębie tej samej komórki CSV?

Mam niektóre dane, które chcę napisać na wielu liniach, ale w tej samej komórce.

Na przykład Jeśli mam następujące trzy zdania,

Sample sentence 1. This is second sample sentence. and this is third sentence. 

Chcę napisać wszystkie te trzy zdania w obrębie pojedynczej komórki pliku csv ale chcę trzy z nich w oddzielnym wierszu.

Moje oczekiwany wynik jest:

Sample sentence 1. 
This is second sample sentence. 
and this is third sentence. 

Obecnie staram się to osiągnąć za pomocą \n charakter między dwoma zdaniami, ale gdy robię to w ten sposób, wszystkie trzy zdania iść na oddzielnym wierszu.

Czy każdy może mi powiedzieć, jak rozwiązać ten problem?

Odpowiedz

18

Aby quote Wikipedia:

Pola z wbudowanymi przerw linia musi być zamknięte w cudzysłów znaków.

jak np .:

1997,Ford,E350,"Go get one now 
they are going fast" 
0

Możliwe, że będziesz w stanie zmienić tokeny używane przez aplikację do analizy wierszy z pliku csv, ale zgodnie z definition of the csv file format wiersze w pliku służą do reprezentowania wierszy w wynikowych danych tabelarycznych.

0

CSV oznacza „przecinek oddzielone wartości”, który jest po prostu opis pliku tekstowym. Jeśli chcesz importować do programu Excel, a następnie mają jedynie wyroki w jednej linii należy spróbować:

Environment.NewLine 

instread prostego /n

+2

Może '\ n', nie'/n'? – abatishchev

-2

Chcę napisać wszystkie te trzy zdania w obrębie pojedynczej komórki CSV ale chce trójkę w osobnej linii

plik CSV jest zdefiniowana jako jeden rząd na linię komórek oddzielonych przecinek („”). Teraz Twój analizator składni może wspierać używanie "" do składania zdań w jednej komórce, ale to już rozszerza specyfikację. Możesz też zakodować \ n i odkodować to później, ale potem znowu nie jest to plik vcsv. Na koniec próbujesz zrobić coś, co plik csv jest z definicji nie zdefiniowany. \ n TO symbol nowej linii. NATURALNIE edytor pokaże tutaj nową linię.

0
string input = "..."; 

var r = input.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries) // split by dot (have you any better approaches?) 
      .Select(s => String.Format("\"{0}.\"", s.Trim())); // escape each with quotes 

input = String.Join(Environment.NewLine, r); // break by line break 
Powiązane problemy