Apache POI - 生成的日期因此无法排序

时间:2015-08-10 10:50:40

标签: java excel apache-poi

使用Apache POI API,我已经能够在Excel上生成正确的整数和浮点数。我可以验证它们是否正确,尤其是在我使用Sort函数时。

我只是将值转换为各自的类型,API负责其余的工作。

但是,这种技术不适用于日期(我将它们转换为java.util.Date),它们格式正确,但排序不准确。

有什么建议吗?

我尝试了两种选择:

第一个:cell.setCellValue(new Date(value));

第二个:cell.setCellValue(new SimpleDateFormat("dd/MM/yyyy").format(new Date(value)));

1 个答案:

答案 0 :(得分:2)

以相反的顺序执行代码:

cell.setCellValue(new SimpleDateFormat("dd/MM/yyyy").format(new Date(value)));

不要这样做。它将日期转换为字符串,就像在Excel中进入单元格并键入'01/01/2010一样 - 前面的'强制转换为字符串


cell.setCellValue(new Date(value));

这几乎就在那里。您需要遵循POI instructions on creating a date cell,并将单元格格式化为所需日期格式的日期单元格

例如对于dd/mm/yyyy,一旦靠近文件顶部,请执行以下操作:

CreationHelper createHelper = wb.getCreationHelper();
CellStyle dateCellStyle = wb.createCellStyle();
dateCellStyle.setDataFormat(
    createHelper.createDataFormat().getFormat("dd/MM/yyyy"));

然后为您的单元格设置+使用

设置样式
cell.setCellValue(new Date(value));
cell.setCellStyle(dateCellStyle);