特殊字符无法写入 csv 文件

时间:2021-02-23 19:46:44

标签: java spring csv export-to-csv

我正在使用 Spring Boot 应用程序并写入 csv 文件。这是控制器方法

 @PostMapping(value = "/audit/keys",  produces = "text/csv", consumes = "multipart/form-data")
 public ResponseEntity<byte[]> getEmployeeReport(
        @RequestPart(value="file") MultipartFile multiPartFile,
        HttpServletResponse response) {
    try {
        response.setHeader("Content-Disposition", "attachment; filename=EmployeeRecord.csv");
        service.getEmployeeRecords(multiPartFile, response);
    } catch (Exception e) {
        logger.error("File can not b read", e);
    }
    return null;
}

这是我的服务方法

  public void getEmployeeRecords(MultipartFile multiPartFile,
        HttpServletResponse response){


// csv generator 
    CsvGenerator csvGenerator = CSV_FACTORY.createGenerator(response.getOutputStream());
    CsvMapper mapper = new CsvMapper();
    mapper.configure(JsonGenerator.Feature.IGNORE_UNKNOWN, true);
    mapper.configure(CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS, true);
    mapper.enable(CsvGenerator.Feature.STRICT_CHECK_FOR_QUOTING);

   csvGenerator.writeObject(dao.fetchEmpRecords());
   
   csvGenerator.flush();
   csvGenerator.close();

}

我的数据库包含以下记录

  empId    empName             empAddress
  123    Roy John          Street 2 Nawada
  340    Roy Jennings      Street # 2 contact $$$

由于第 2 条记录包含 # $ etc,因此它不会写入 Csv,但是我可以在响应/​​预览选项卡的 UI 上看到这两条记录。但是 EmployeeRecord.csv 只包含一条记录。尝试过使用 produces = "text/csv; charset=UTF-8" 但它对我不起作用,我正在使用 Apace 公共库并想使用 IOUtils 但到目前为止没有运气:(

1 个答案:

答案 0 :(得分:0)

csvGenerator.writeObject(dao.fetchEmpRecords());

此方法用于编写一个给定的 Java 对象 (POJO)。 尝试为循环中的每条记录调用它。

相关问题