CSVPrinter 在行首和行尾添加双引号

CSVPrinter adds double quotes at beginning and end of line

我正在使用 CSVPrinter 创建 CSV。

@Data
public class ExportRecord {

    String name;
    String email;
    String code;

    @Override
    public String toString() {
        return String.join(";",
                name,
                email,
                StringUtils.defaultString(code));   
    }

}
CSVFormat csvFormat = CSVFormat.EXCEL.builder()
                .setDelimiter(';')
                .setHeader(Arrays.stream(ExportHeader.values()).map(ExportHeader::getCsvHeader).toArray(String[]::new))
                .build();

try (CSVPrinter csvPrinter = new CSVPrinter(new FileWriter(csvToExport), csvFormat)) {
  for (ExportRecord exportRecord : exportRecords) {
    csvPrinter.printRecord(exportRecord);
  }
} catch (IOException e) {
    ...
}

这工作正常,但它在行首和行尾添加了双引号。例如

header1;header2;header3
"string1;string2;string3"

我怎样才能删除它们?

我尝试了一个使用 PrintWriter 的更简单的解决方案并解决了它。

try (PrintWriter printWriter = new PrintWriter(csvToExport)) {
    String header = Arrays.stream(ExportHeader.values())
                    .map(ExportHeader::getCsvHeader)
                    .collect(joining(";"));
    printWriter.println(header);
    for (ExportRecord exportRecord : exportRecords) {
       printWriter.println(exportRecord.toString());
    }
} catch (IOException e) {
    ...
}