因此,我正在使用 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 2010年5月4日 2009年3月3日
错误是当我使用自动过滤器->升序排序对此列(在 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 中。不知道如何解决。
最佳答案
您的问题是在填充单元格时将数据转换为字符串
row.createCell((short)column++).setCellValue(Tools.dateToString(rfq.getCreationDate()));
我不是java用户,所以不确定,但你可以尝试一下
row.createCell((short)column++).setCellValue(rfq.getCreationDate());
如果基础数据采用 Excel 识别为日期的形式,则应该没问题。
关于java - 使用 java HSSF POI 填充 excel 中的字段 - excel 无法正确排序日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5915273/