我正在使用spring启动应用程序并写入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
但到目前为止运气不好:(
1条答案
按热度按时间nqwrtyyt1#
这个方法用于编写一个给定的java对象(pojo)。尝试为循环中的每个记录调用它。