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

新手上路,请多包涵
  1. 我有这样内容的excel文件:

    • A1:一些字符串

    • A2:2

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

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

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

我该怎么做才能将值读取为字符串?

原文由 joycollector 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

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

原文由 wil 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

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

另外,请注意很多人建议做 cell.setCellType(Cell.CELL_TYPE_STRING) ,但是 Apache POI JavaDocs 非常明确地指出你不应该这样做!执行 setCellType 调用将松散格式,因为 javadocs 解释 了转换为保留格式的 String 的唯一方法是使用 DataFormatter 类

使用此类的一个简单示例:

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

原文由 Gagravarr 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题