I am trying to write some data to csv. Here is what I am trying to do:
class Sample {
private String id;
private String type;
private String name;
private int value;
// getter-setter
}
Implementation
import com.opencsv.CSVWriter;
...
// code snippet
List<String> ids = getIds();
List<Sample> result = new ArrayList<>();
for (String id : ids) {
Sample sample = getSample(id);
result.add(sample);
}
//write result to csv
CSVWriter csvWriter = new CSVWriter(new FileWriter(filePath), CSVWriter.DEFAULT_SEPARATOR, CSVWriter.NO_QUOTE_CHARACTER);
// Not sure what to do next here.
I couldn't find much on writing a list of instances to csv.
UPDATE:
I tried the below links and code as suggested by @Praveen, @dgg below in comments but I am getting empty csv file written.
public void writeToCsv(String filePath, String[] header, List<Sample> samples) throws IOException {
try (FileWriter writer = new FileWriter(filePath)) {
ColumnPositionMappingStrategy mappingStrategy = new ColumnPositionMappingStrategy();
mappingStrategy.setType(Sample.class);
mappingStrategy.setColumnMapping(header);
StatefulBeanToCsv<Sample> beanToCsv = new StatefulBeanToCsvBuilder<Sample>(writer)
.withMappingStrategy(mappingStrategy)
.withSeparator('#')
.withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
.build();
// todo: getting empty csv file. why? currently debugging.
beanToCsv.write(samples);
} catch (CsvRequiredFieldEmptyException e) {
e.printStackTrace();
} catch (CsvDataTypeMismatchException e) {
e.printStackTrace();
}
}