如何将Excel单元格中的数字字符串读作字符串(而不是数字)?

2022-08-31 07:19:05
  1. 我有包含此类内容的excel文件:

    • A1:一些弦

    • A2:2

    所有字段都设置为字符串格式。

  2. 当我使用POI在java中读取文件时,它告诉A2是数字单元格格式。

  3. 问题是A2中的值可以是2或2.0(我希望能够区分它们),所以我不能只使用。.toString()

如何以字符串形式读取值?


答案 1

我有同样的问题。我在读取字符串值之前做了,无论用户如何格式化单元格,这都解决了问题。cell.setCellType(Cell.CELL_TYPE_STRING);


答案 2

我不认为当你问这个问题时,我们有这个课程,但今天有一个简单的答案。

您要做的是使用 DataFormatter 类。您将此单元格传递给它,它会尽力返回一个字符串,其中包含 Excel 将为该单元格显示的内容。如果向它传递一个字符串单元格,则会取回字符串。如果您向它传递一个应用了格式规则的数字单元格,它将根据它们设置数字格式并返回字符串。

对于您的情况,我假设数字单元格应用了整数格式规则。如果您要求 DataFormatter 设置这些单元格的格式,它将为您提供一个包含整数字符串的字符串。

另外,请注意,很多人建议这样做,但是Apache POI JavaDocs非常清楚地表明你不应该这样做!执行调用将松散格式,因为javadocs解释说,转换为具有剩余格式的字符串的唯一方法是使用DataFormatter类cell.setCellType(Cell.CELL_TYPE_STRING)setCellType

使用此类的简单示例:

DataFormatter dataFormatter = new DataFormatter();
String formattedCellStr = dataFormatter.formatCellValue(cell);

推荐