Saltar al contenido

Comillas dobles no deseadas en el archivo csv generado

Este equipo de trabajo ha estado largas horas buscando soluciones a tus interrogantes, te regalamos la soluciones de modo que deseamos resultarte de mucha apoyo.

Solución:

esto funcionó para mí

CSVWriter writer = 
    new CSVWriter(new FileWriter(csv), ',', CSVWriter.NO_QUOTE_CHARACTER);

Ver el javadoc CSVWriter

Probablemente debería aclarar lo que quiere decir con comillas ‘no deseadas’.

  1. no quiero que se cite todosolo los campos que contienen comas incrustadas, comillas y saltos de línea (citar todo es innecesario y hace que mis archivos sean más grandes), o

  2. No quiero que se cite nada y entiendo que mi CSV no será válido si contiene comas, comillas y saltos de línea incrustados.

Si es la primera opción, entonces opencsv no es compatible con esto, cita todo o nada. Eche un vistazo a Super CSV si desea una biblioteca CSV de código abierto que solo cite cuando sea necesario (y que también pueda citar todo, si es necesario).

Si es la segunda opción, vaya con la respuesta de Sheldon, pero tenga en cuenta que su CSV no será válido si contiene comas, comillas y líneas nuevas incrustadas.

Por ejemplo, si estoy leyendo su archivo CSV, ¿cómo debo saber que lo siguiente es en realidad solo un registro con 2 campos?

P Sherman, 42 Wallaby Way,
Sydney, AUSTRALIA

Mientras que si se citara correctamente, eso sería obvio, es decir,

P Sherman, "42 Wallaby Way,
Sydney, AUSTRALIA"

FYI, aquí están las reglas relacionadas con las comillas de RFC4180 (la definición de tipo MIME para CSV).

5 Cada campo puede o no estar encerrado entre comillas dobles (sin embargo, algunos programas, como Microsoft Excel, no usan comillas dobles). Si los campos no están entre comillas dobles, es posible que no aparezcan comillas dobles dentro de los campos. Por ejemplo:

   "aaa","bbb","ccc" CRLF
   zzz,yyy,xxx

6 Los campos que contienen saltos de línea (CRLF), comillas dobles y comas deben estar entre comillas dobles. Por ejemplo:

   "aaa","b CRLF
   bb","ccc" CRLF
   zzz,yyy,xxx

7 Si se usan comillas dobles para encerrar campos, entonces una comilla doble que aparece dentro de un campo debe escaparse precediéndola de otra comilla doble. Por ejemplo:

   "aaa","b""bb","ccc"

Si no desea las comillas en los valores del archivo CSV generado, debe crear el objeto CSVWriter de esta manera:

CSVWriter writer = new CSVWriter(new FileWriter(filePath),
    CSVWriter.DEFAULT_SEPARATOR,
    CSVWriter.NO_QUOTE_CHARACTER,
    CSVWriter.DEFAULT_ESCAPE_CHARACTER,
    CSVWriter.RFC4180_LINE_END);

los key es CSVWriter.NO_QUOTE_CHARACTER. Puede personalizar los valores de los otros parámetros del constructor.

valoraciones y comentarios

Tienes la opción de sustentar nuestra investigación poniendo un comentario o dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *