当前位置: 首页 > 知识库问答 >
问题:

从Excel表读取日期值(Java)

司寇高峯
2023-03-14

我有一个Java代码显示的内容的excel表。现在,当我处理数值/字符串/布尔数据时,它总是给出正确的结果。不同的是,为了测试我的代码,我在Excel中做了很少的改动,并添加了一个日期值(例如4-SEP-09)。在运行我的代码时,它返回了不想要的结果。代码和O/P如下所示。如何从excel表中读取和显示日期值?我在用阿帕奇POI。我可以执行类似xssfdateutil的操作,检查单元格值是否为date,或者是否使用if-else?这是一个可能的解决方案吗?

FileInputStream file = new FileInputStream(new File(FileName));
       System.out.println("The contents of sheet are:\n");
       XSSFWorkbook workbook = new XSSFWorkbook(file);
       XSSFSheet sheet = workbook.getSheetAt(0);
       Iterator<Row> rowIterator = sheet.iterator();
       while(rowIterator.hasNext()) {
           Row row = rowIterator.next(); 
           Iterator<Cell> cellIterator = row.cellIterator();
           while(cellIterator.hasNext()) {
               Cell cell = cellIterator.next();
               switch(cell.getCellType()) {
                   case Cell.CELL_TYPE_NUMERIC:
                       System.out.print(cell.getNumericCellValue() + "\t\t");
                       break;
                   case Cell.CELL_TYPE_STRING:
                       System.out.print(cell.getStringCellValue() + "\t\t");
                       break;
               }
           }
           System.out.println("");
       }    
       file.close();
ColA   | ColB....(few other columns)
32755.0|(other values)
ColA    | ColB....(few other columns)
4-SEP-89|(other values)

注意:-这是我代码的一部分,运行良好。它没有给出错误,但我需要在上面要求的O/P小变化。这件事我已经做了一段时间了。在此之前,我已经问过与显示excel工作表相关的问题--在阅读excel文档(Java代码)时的问题,该问题与其他几个问题一起得到了解决。还是要谢谢你.

此外,据我所知,excel中的所有内容都是作为字符串读取的(布尔值除外)?不是吗?

共有1个答案

聂涛
2023-03-14

您可能需要查看dateutil.isCellDateFormatted()

DateUtil是一个实用工具类,它帮助您处理excel日期。它还具有从单元格获得的double获取Java日期的方法

 类似资料:
  • 问题内容: 我将POI HSSF API用于Java中的excel操作。我在一个excel单元格中有一个日期值“ 8/1/2009”,当我尝试使用HSSF API读取此值时,它将检测到单元格类型为数字并返回我的日期的“双精度”值。请参见下面的示例代码: Cell.getCellType()返回NUMERIC_TYPE,因此此代码将日期转换为两倍!:( 有什么方法可以读取HSSF POI中的日期!

  • 问题内容: 我正在使用Apache POI库读取Excel文件。我在读取密码单元时被卡住了。如果用户在密码单元格中输入日期作为密码,即16/05/2012。我正在将此值读取为“ 41045”,而该值应为“ 16/05/2012”。这是我的代码: 有人可以帮忙吗? 谢谢。 问题答案: 您在POI中寻找的类是DataFormatter 当Excel写入文件时,某些单元格将存储为文字字符串,而另一些单元

  • 我有一个xlsx文件,我正在阅读-Apache POI库。 我的目标是:读取行中的所有单元格作为字符串值。但正如我所看到的,我不能将01-sep-13作为字符串读取,它仅表示类似于带有cell.getDateCellValue()的日期类型(); 1)我是否可以以某种方式将01-sep-13读作字符串:“01-sep-13”;2)如果我有不同日期模式(ddMMyyyy)和(DD-MMMYYY),我

  • 我正在尝试使用apache poi库来读取excel。我想将日期字段转换为字符串值。因此,我使用了以下代码: 我的约会方式很奇怪

  • 我需要读取一个非常大的Excel文件,该文件既有日期编号,也有非日期编号。我发现的所有示例似乎都能做到这一点或那一点(将单元格标识为日期值或在恒定内存中读取文件)。 对于非常大的文件,唯一有效的解决方案是此处所述的StreamingReader方法(此处所述的其他示例要么不适用于我的文件格式,要么出现内存不足堆错误)。 用java读取大型Excel文件(500K行) http://poi.apac

  • 您能告诉我如何将转换为吗?