I have a CSV file with the following columns: id, fname, telephone, lname, address.
I have a P
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