es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

CsvToBean parse fichero csv java

public static <t> List<t> getCsvData(String file, Class<t> clazz) throws IOException {
    try (FileReader fr = new FileReader(file)) {
        HeaderColumnNameMappingStrategy<t> strategy = new HeaderColumnNameMappingStrategy<>();
        strategy.setType(clazz);

        CsvToBean<t> csvToBean = new CsvToBeanBuilder<t>(fr)
                .withSeparator(';')
                .withQuoteChar('"')
                .withIgnoreQuotations(true)
                .withMappingStrategy(strategy).build();
        return csvToBean.parse();
    }
}

Utilizo CsvToBean para convertir un archivo csv en un bean. El archivo csv utiliza un punto y coma como separador. Cuando un valor de columna en el archivo contiene un punto y coma, no se puede analizar. ¿Hay alguna manera de solucionarlo?

ejemplo ‘aa;a’;’bbb’;

Tags:  

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de resolverlo. La clase CsvToBeanBuilder proporciona un método llamado withSeparator(char separator) que te permite especificar un carácter separador personalizado para el archivo CSV de entrada. En el código proporcionado, el separador está configurado como punto y coma (;). Para manejar el escenario en el que un valor de columna contiene un punto y coma, puedes elegir otro carácter separador que no se utilice en los valores de las columnas. Por ejemplo, puedes elegir el símbolo de tubería (|) como el carácter separador cambiando la línea:

    .withSeparator(‘;’)

    a

    .withSeparator(‘|’)

    Luego, necesitas modificar tu archivo CSV para usar el símbolo de tubería como separador entre las columnas. Por ejemplo, el valor de ejemplo en la pregunta se escribiría como:

    ‘aa;a’|’bbb’

    Después de estos cambios, CsvToBean debería poder analizar correctamente el archivo CSV incluso si la columna contiene puntos y comas.

Comments are closed.