java - 使用 java HSSF POI 填充 excel 中的字段 - excel 无法正确排序日期字段

标签 java excel apache-poi poi-hssf

因此,我正在使用 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/

相关文章:

java - 使用 Java 处理 'nslookup -type=srv'

c# - 异步读取 Excel 工作表

java - Apache POI autoSizeColumn() 行为怪异

java - 我想将某些列的边框设置为粗,但所有列都已设置

java - 初始化后更新选项卡内容

java - “Could not find or load main class”是什么意思?

java - 如何在 Net Beans 中从 Java 代码执行 jar 文件

excel - 在 Mac OS X Sierra (CoolProp) 上设置 DYLD_LIBRARY_PATH

java - 文件之间的克隆表

java - 如何使用 Apache POI 同时合并单元格和设置值?