OpenCSV - How to map selected columns to Java Bean regardless of order?

前端 未结 10 926
终归单人心
终归单人心 2020-11-30 06:38

I have a CSV file with the following columns: id, fname, telephone, lname, address.

I have a P

10条回答
  •  无人及你
    2020-11-30 07:02

    With opencsv, you can create a generic function like :

    public static  void csvWriterUtil(Class beanClass, List data, String outputFile, String[] columMapping){
        try{
            Writer writer = new BufferedWriter(new FileWriter(outputFile));
            ColumnPositionMappingStrategy strategy = new ColumnPositionMappingStrategy<>();
            strategy.setType(beanClass);
            strategy.setColumnMapping(columMapping);
            StatefulBeanToCsv statefulBeanToCsv =new StatefulBeanToCsvBuilder(writer)
                    .withMappingStrategy(strategy)
                    .build();
            writer.write(String.join(",",columMapping)+"\n");
            statefulBeanToCsv.write(data);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (CsvRequiredFieldEmptyException e) {
            e.printStackTrace();
        } catch (CsvDataTypeMismatchException e) {
            e.printStackTrace();
        }
    }
    

    Here you can pass only required columns through columMapping parameter. Code example is available in https://github.com/soumya-kole/JavaUtils/tree/master/CsvUtil

提交回复
热议问题