当前位置: 首页 > 面试题库 >

从Excel单元格读取日期值作为字符串

邬楚青
2023-03-14
问题内容

我正在使用Apache
POI库读取Excel文件。我在读取密码单元时被卡住了。如果用户在密码单元格中输入日期作为密码,即16/05/2012。我正在将此值读取为“
41045”,而该值应为“ 16/05/2012”。这是我的代码:

cell = row.getCell(); // date in the cell password '16/05/2012'
switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_STRING:
    cellValue = cell.getRichStringCellValue().getString();
    break;
case HSSFCell.CELL_TYPE_NUMERIC:
    if(cellCount == TEMPLATE_PASSWORD) {// if cell is password
        cell.setCellType(Cell.CELL_TYPE_STRING);
        cellValue = cell.getRichStringCellValue().getString(); // value read is 41045 and not "16/05/2012"
    }
    break;
default:
}

有人可以帮忙吗?

谢谢。


问题答案:

您在POI中寻找的类是DataFormatter

当Excel写入文件时,某些单元格将存储为文字字符串,而另一些单元格将存储为数字(包括日期)。对于后者,代表该单元格的浮点值存储在文件中,因此当您向POI询问其实际具有的单元格值时。

但是有时候,尤其是在进行文本提取时(但并非总是如此),您希望使单元格值看起来像在Excel中一样。并非总是能够完全以String形式获得该字符串(例如,非全空格填充),但是DataFormatter类会让您接近。

另请注意,在Excel中,自〜1900以来,日期存储为浮点数,这就是为什么看到数字而不是日期的原因。使用DataFormatter(或类似格式)将其呈现为日期



 类似资料:
  • 我的C#. Net应用程序通过使用excel公式字符串加载和读取excel工作表单元格值。 例如,excel工作表位置和选项卡名称及其单元格行/列将作为公式字符串提供。 'D:\DataX[数据.Xls]EOD'$A5级 根据上述公式-C#应用程序加载数据。Xls,并打开EOD选项卡,应读取第5行A列值。 寻找在C#中完成的最佳方式。Net框架。

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

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

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

  • 我有一个带有sheet1 excel文件,该文件的第2行和第10列有一个我需要读取的值。这是我的代码。 获取了cell对象Excel.Range后,我不知道如何读取该单元格的内容。我试着把它转换成数组并在它上面循环,我试着转换成字符串数组等等,我确信这是非常简单的。有没有直接的方法只得到一个字符串的单元格值?

  • 问题内容: 当我读取excel数字单元格值时,我得到带小数的输出。例如:79读数为79.0,0.00读数为0.0。我编写的应用程序代码是: 问题答案: Stack Overflow上经常出现这个问题,因此建议您仔细阅读许多类似的问题,以找到答案! Excel将文件格式中的几乎所有数字都存储为浮点值,这就是为什么POI会为您返回数字单元格的双精度数字,因为这就是真正的数字。如果希望它看起来像在Exc