1

因此,我正在使用 Java 的 HSSF POI 填充一个 excel 文档,并且我正在使用一个 excel 模板,该模板已经像这样输入了一些标题......

HSSFWorkbook workbook = readFile(TEMPLATE_LOCATION);

我的问题是,当我用 MM/dd/yyyy 日期格式的数据填充其中一列时,就像这样......

row.createCell((short)column++).setCellValue(Tools.dateToString(rfq.getCreationDate()));

它用类似的数据适当地填充列...... 01/01/2011 05/04/2010 03/03/2009

错误是当我使用自动过滤器->升序对该列(在excel中)执行排序时,它会以错误的顺序返回日期,如下所示......

2011 年 1 月 1 日

2009 年 3 月 3 日

2010 年 5 月 4 日

(因为它像字符串一样读取它并排序而不是按日期排序)

我试图将该列设置为“数字”列,然后排序仍然没有骰子....

        cell = row.createCell((short)column++);
        cell.setCellStyle(workbook.createCellStyle());
        cell.getCellStyle().setAlignment(HSSFCellStyle.ALIGN_RIGHT);
        cell.setCellType(cell.CELL_TYPE_NUMERIC);
        cell.setCellValue(Tools.dateToString(rfq.getCreationDate()));

同样以这种方式格式化也无济于事......

SimpleDateFormat formatter = new SimpleDateFormat("M/d/yyyy");
row.createCell((short)column++).setCellValue(formatter.format(order.getCreationDate()));

这一切都发生在 Excel 2003 中。不知道如何解决。

4

1 回答 1

2

您的问题是您在填充单元格时将数据转换为字符串

row.createCell((short)column++).setCellValue(Tools.dateToString(rfq.getCreationDate()));

我不是java用户,所以不确定,但你可以试试

row.createCell((short)column++).setCellValue(rfq.getCreationDate());

如果基础数据采用 Excel 识别为日期的形式,则应该没问题。

于 2011-05-06T22:43:59.880 回答