传递字符串对象时使用 apache poi 格式化日期

formatting dates using apache poi when passing a string object

我需要将 excel 中的日期单元格格式化为 dd/mm/yyyy

我明白这可能不是“正确”的标准,但是,这就是客户想要的...

我传递给单元格的日期格式为 yyyy-mm-dd

所以,

我有这个代码:

Cell dateCell;
dateCell = row.createCell(3);
dateCell.setCellValue(p.getDateOfBirth());
CellStyle dateCellStyle = WorkBook.createCellStyle();
dateCellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("dd/mm/yyyy"));
dateCell.setCellStyle(dateCellStyle);

根据这个: http://www.kscodes.com/java/writing-various-date-formats-in-excel-using-poi/ (1)

我相信应该有用。但是当我创建 excel 文件时,日期仍然是 yyyy-mm-dd

我看过这里 How to set date field in excel using java apache poi library?,我注意到它使用了行

cell.setCellType(CellType.NUMERIC);

但是(1)中没有提到这个

有人知道我做错了什么吗?

The date that I am passing in to the cell is formatted yyyy-mm-dd

这是问题的根本原因。 API 期望您传递 Date 对象,而您传递的是 String 对象。您需要将日期字符串解析为 Date 对象并将其传递给 dateCell.setCellValue,如下所示:

Cell dateCell;
dateCell = row.createCell(3);
Date dateOfBirth = new SimpleDateFormat("yyyy-MM-dd").parse(p.getDateOfBirth() + "");
dateCell.setCellValue(dateOfBirth);
CellStyle dateCellStyle = WorkBook.createCellStyle();
dateCellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("dd/mm/yyyy"));
dateCell.setCellStyle(dateCellStyle);