【问题标题】:Special characters not getting write to csv file特殊字符未写入 csv 文件
【发布时间】:2021-05-26 03:11:39
【问题描述】:

我正在使用 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 $$$

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

【问题讨论】:

  • 我认为这与http传输无关。这更像是杰克逊的问题。
  • 当你只返回null时,为什么你的控制器方法的签名是ResponseEntity&lt;byte[]&gt;?为什么你认为这个问题与 Spring Boot 毫无关系?您显示的 getEmployeeRecords() 不是控制器中调用的那个。你想写入数据(使用POST)还是返回数据(你在DAO上调用fetch)?

标签: java spring csv export-to-csv


【解决方案1】:
csvGenerator.writeObject(dao.fetchEmpRecords());

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

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 2012-03-25
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多