CSVWriter.javawrite() tipadas para cadenas (con escape de comillas dobles), enteros largos, fechas (formato ISO 8601) y objetos genéricos. Carácter separador, final de línea y formato de fecha configurables. Se utiliza para exportaciones de datos de ProjectForge (listas de direcciones, exportaciones de hojas de tiempo, informes financieros).java.io.PrintWriter / java.io.Writer — Salida de textojava.text.DateFormat / SimpleDateFormat — Formateo de fechas para columnas de fecha CSVjava.util.Date — Tipo de valor de fechajava.util.TimeZone — Zona horaria UTC para formateo de fechas| Configuración | Valor por defecto | Método setter |
|---|---|---|
| Separador CSV | ';' (punto y coma — convención europea) | setCsvSeparator(char) |
| Final de línea | "\n" (nueva línea Unix) | setCr(String) |
| Formato de fecha | "yyyy-MM-dd HH:mm:ss.SSS" | setDateFormat(DateFormat) |
| Zona horaria de fecha | UTC | Codificada en el constructor |
Todos los métodos write() devuelven this (la instancia de CSVWriter), permitiendo encadenamiento de métodos:
csvWriter.write("Nombre").write("Edad").write(42L).writeEndOfLine();
| Método | Formateo | Comillas |
|---|---|---|
write(String s) | Cadena sin procesar con escape de " a "" (duplicación) | Siempre envuelto en "..." — sigue las reglas de comillas RFC 4180 |
write(long value) | Salida numérica directa mediante PrintWriter.print() | Ninguna — los números no llevan comillas |
write(Date value) | Formateado mediante dateFormat.format() en UTC | Envuelto en comillas — las fechas pueden contener espacios o caracteres especiales |
write(Object value) | Alternativa: String.valueOf(value) | Ninguna — los objetos genéricos no llevan comillas (riesgoso para objetos con comas/comillas) |
El método write(String) implementa el escape CSV adecuado según RFC 4180:
writeSeparator() con el indicador firstEntry)")"), lo genera dos veces ("") — la secuencia de escape CSV estándar")writeLine(Object[] values) — Escribe todos los valores del array, luego llama a writeEndOfLine()writeEndOfLine() — Genera el final de línea configurado (\n por defecto) y restablece firstEntry = trueEl indicador booleano firstEntry rastrea si estamos al inicio de una línea:
firstEntry == true: se establece a false (primera celda — no se necesita separador)firstEntry == false: genera el carácter separador antes del valor de la celdaCSVWriter define DEFAULT_CSV_SEPARATOR_CHAR = ';' como una constante pública, a la que CSVParser hace referencia para garantizar un separador predeterminado coherente entre el lector y el escritor.
Esta implementación es intencionalmente mínima en comparación con Apache Commons CSV u OpenCSV:
CSVParser.parseHeadCols())write(Object) NO pone comillas en la salida — llama a String.valueOf(value) y escribe directamente. Si el toString() del objeto devuelve una cadena que contiene comas, punto y coma o nuevas líneas, el CSV resultante estará mal formado. Esto es aceptable porque se espera que los llamadores utilicen las sobrecargas específicas de tipo."yyyy-MM-dd HH:mm:ss.SSS" es similar a ISO 8601 pero utiliza un separador de espacio en lugar de 'T'.868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024 -> 2025. a73905c14 Corregir errores tipográficos en directorios projectforge*/ Encontrado con codespell b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. 5f7ef41b8 Copyright 2021 -> 2022 ceb63e8a1 Encabezado de código fuente: (C) 2001-2021. 7c79f1922 Copyright del encabezado fuente -> 2020.