如何使用Apache POIsearch特定date的Excel工作表?
我一直使用给出的示例代码来search工作表的内容:
Sheet sheet1 = wb.getSheetAt(0); for (Row row : sheet1) { for (Cell cell : row) { CellReference cellRef = new CellReference(row.getRowNum(), cell.getCellNum()); System.out.print(cellRef.formatAsString()); System.out.print(" - "); switch(cell.getCellType()) { case Cell.CELL_TYPE_STRING: System.out.println(cell.getRichStringCellValue().getString()); break; case Cell.CELL_TYPE_NUMERIC: if(DateUtil.isCellDateFormatted(cell)) { System.out.println(cell.getDateCellValue()); } else { System.out.println(cell.getNumericCellValue()); } break; case Cell.CELL_TYPE_BOOLEAN: System.out.println(cell.getBooleanCellValue()); break; case Cell.CELL_TYPE_FORMULA: System.out.println(cell.getCellFormula()); break; default: System.out.println(); } }
}
但无法find正确比较从工作表中提取的date与给定date的方法。 我试过使用数据validation,也格式化date到一个string,并包括进一步的条件声明,但没有任何工作。
看起来像一个相对简单的问题,必要但尚未能够解决它呢?
任何帮助将不胜感激!
Excel将date存储为浮点小数,这显然与Java处理date( long
值)的方式不同。
Apache POI包含一个辅助类,用于在Java和Excel之间进行date转换: DateUtil
。 这应该有帮助(如果我的问题是正确的)。
我注意到,如果你从表单中读取一个数字,即使你把它看作一个string,你也会得到十进制的数字。
我所做的,我保留单元格中的所有数据以下划线'_'开始,所以如果我尝试从任何单元格读取数据作为string,我不会得到小数或任何东西。
String cellValue = cell.getValueAsString(); // assuming the cell value is "_01/01/2011" cellValue = cellValue.substring(1);// this will ignore first character, the '_'
使用DataFormatter类(Apache POI):
DataFormatter df = new DataFormatter(); String cellValue = df.formatCellValue(Cell cell);
- 无法使用Apache POI ss用户模型添加工作表
- Java Apache POI Excel保存为PDF
- apache poi最大行数
- 如何从一个Excel工作表使用java获取特定列名称(作为parameter passing)的最后一个非空单元格的行索引?
- Apache POI – FileInputStream起作用,File对象失败(NullPointerException)
- 如果从ArrayList传递给Excel,如何从XML中检测新的行字符?
- 是否可以将VB添加到POI的Excel表单中?
- 无法使用Java和Apache POI写入Excel文件
- Apache POI:XSSFWorkbook中的对angular边框