2011-04-21 37 views
16

Duplicar posible:
Dealing with commas in a CSV filecómo usar una coma en columnas csv

Estamos exportando unos datos masivos en un archivo csv para uno de nuestros proyectos. Entonces, en este caso, tenemos que exportar valores como a, b, c, d, que deben permanecer en una columna. Pero la coma los separará en diferentes columnas.

Como si exportamos algunos valores ingresados ​​en textarea o editor que contienen caracteres como \ r \ n se exportarán como filas separadas en csv. ¿¿Como puedó resolver esté problema??

+4

http://stackoverflow.com/questions/769621/dealing-with-commas-in-a-csv-file –

Respuesta

5

La forma más común de manejar esto es usar el campo "" around, pero dependiendo de quién consuma sus archivos, se puede manejar de varias maneras. Puede delimitar las comas, puede cambiar las comas para un valor especial o utilizar un delimitador diferente, pero el más comandar

49
 // CSV rules: http://en.wikipedia.org/wiki/Comma-separated_values#Basic_rules 
     // From the rules: 
     // 1. if the data has quote, escape the quote in the data 
     // 2. if the data contains the delimiter (in our case ','), double-quote it 
     // 3. if the data contains the new-line, double-quote it. 

     if (data.Contains("\"")) 
     { 
      data = data.Replace("\"", "\"\""); 
     } 

     if (data.Contains(",")) 
     { 
      data = String.Format("\"{0}\"", data); 
     } 

     if (data.Contains(System.Environment.NewLine)) 
     { 
      data = String.Format("\"{0}\"", data); 
     } 

datos podrían ser elementos individuales de valor de la propiedad db o una de un tipo.

+0

muy útil, resolvió mi problema pero al abrir en excel muestra un mensaje que está en un formato diferente –

+2

Creo que este elemento debería ser: 'if (data.Contains (" \ "")) {data = String.Format ("\" {0} \ "", data.Replace ("\" "," \ "\ "")); } 'como una cita escapada debe estar en una cadena que está entre comillas. – DelftRed

+0

Con excel 2013, necesita abrir el archivo con el bloc de notas ++, agregar ** sep =, ** en la primera línea. –

Cuestiones relacionadas