我正在尝试以 excel 格式保存用户定义对象的列表,即来自 REST API 的 .xlsx 格式。这会创建一个 XSSF 工作簿 并将数据存储在工作簿中。返回 字节数组输入流 .在我的实体类中,我将其存储为@Column(name = "created_date", columnDefinition = "timestamp with time zone")
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
Here is piece of code for writing list to Workbook in service.
XSSFWorkbook workbook = new XSSFWorkbook();
// Create a blank sheet
XSSFSheet sheet = workbook.createSheet("Survey");
String[] columns = {"Name","createdDate"};
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int rownum = 1;
for (Integer key : keyset) {
// this creates a new row in the sheet
Row row = sheet.createRow(rownum++);
Survey survey = data.get(key);
row.createCell(0).setCellValue(survey.getName());
row.createCell(1).setCellValue(survey.getCreatedDate());
}
try {
workbook.write(outputStream);
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
workbook.close();
}
return new ByteArrayInputStream(outputStream.toByteArray());
在 Controller 中,我正在设置标题
contentType
和 content-disposition
并返回 响应实体 .HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.add("Content-Disposition", "attachment; filename=" + "AuditTrial.xlsx");
return ResponseEntity.ok().headers(headers).body(isr);
实际数据如下,即来自数据库的数据
[{
"createdDate": "2019-07-15T07:45:48.555Z",
"name": "abc"
},{
"createdDate": "2019-07-15T07:45:48.555Z",
"name": "xyz" }]
问题是当我尝试打开调用上述api后生成的excel时,日期格式不正确。如下。
如何在excel中以正确的格式保存日期?我在哪里弄错了。欢迎任何帮助和建议。
最佳答案
您的实体与 apache poi 的单元格无关。
在您的实体的 createdDate 中,您设置它是一个时间戳,但它不会告诉 apache poi。
当您要创建日期单元格时,您需要:
例如:
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
...
for (Integer key : keyset) {
// this creates a new row in the sheet
Row row = sheet.createRow(rownum++);
Survey survey = data.get(key);
row.createCell(0).setCellValue(survey.getName());
Cell dateCell = row.createCell(1);
dateCell.setCellStyle(cellStyle);
dateCell.setCellValue(survey.getCreatedDate());
}
关于excel - 在 XSSFWorkbook 中保存时日期字段未以正确格式保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57037636/