Saltar al contenido

Evite que opencsv escriba comillas en el archivo .csv

Te doy la bienvenida a nuestra página web, en este sitio encontrarás la resolución de lo que buscas.

Solución:

Solo para extender la respuesta de Matten, use los caracteres incorporados en CSVWriter para especificar el quotechar. Entonces su escritor se vería así:

CSVWriter writer = new CSVWriter(new FileWriter(fileName), CSVWriter.DEFAULT_SEPARATOR, CSVWriter.NO_QUOTE_CHARACTER);

Actualizar (16 de octubre de 2019): ahora es posible con versiones posteriores de OpenCSV. Por favor, vea la respuesta de Sikor.


TL;DR No puede hacerlo con OpenCSV v2.3. Pero puedes hacerlo con Commons CSV.

OpenCSV (v2.3) no parece proporcionar una forma segura de desactivar las comillas cuando no son necesarias. Por lo general, no se requieren comillas para los valores que no tienen el carácter separador o el carácter de final de línea.

Usando NO_QUOTE_CHARACTER como algunos han sugerido:

CSVWriter writer = new CSVWriter(new FileWriter("data.csv"), CSVWriter.DEFAULT_SEPARATOR, CSVWriter.NO_QUOTE_CHARACTER);
String[] someData = new String[] "Black and white", "Red, yellow and blue";
writer.writeNext(someData);

produce el incorrecto Representación CSV como:

Black and white,Red, yellow and blue

Una representación más válida de estos datos, que usa comillas solo cuando es necesario, sería:

Black and white,"Red, yellow and blue"

No he usado Commons CSV, pero parece proporcionar esta capacidad a través de QuoteMode.MINIMAL que hace lo siguiente:

Campos de comillas que contienen caracteres especiales como un delimitador, un carácter de comillas o cualquiera de los caracteres del separador de línea.

Sí. Hay un CSVWriter en el mismo paquete que sigue la misma semántica que el CSVReader. Por ejemplo, para escribir un archivo separado por tabulaciones:

CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), 't');
// feed in your array (or convert your data to an array)
String[] entries = "first#second#third".split("#");
writer.writeNext(entries);
writer.close();

Si prefiere usar sus propios caracteres de comillas, puede usar la versión de tres argumentos del constructor, que toma un carácter de comillas (o siéntase libre de pasar CSVWriter.NO_QUOTE_CHARACTER).

También puede personalizar los terminadores de línea utilizados en el archivo generado (lo cual es útil cuando está exportando desde su aplicación web de Linux a clientes de Windows). Hay un argumento constructor para este propósito.

Reseñas y puntuaciones del post

Si haces scroll puedes encontrar los informes de otros creadores, tú igualmente puedes mostrar el tuyo si te apetece.

¡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 *