1

我有 Excel 文件和一些内容,来自外部源(数据库、文件等)。我在 Excel 中遇到了数字单元格的问题 -getNumericValue 为任何单元格返回双精度值,无论值的格式如何。外部源返回数字的字符串表示形式,即它可能返回“301”和“301.0”,它们是不同的值,我不知道在哪种情况下可能是哪种类型。但是如果我在 Excel 文件中有“301”,getNumericValue 方法将始终返回“301.0”,所以如果我需要比较来自外部源和 excel 的值,则 excel 中的“301”将不同于来自外部源的“301”,因为它们将具有不同的字符串表示形式。

长话短说,你能告诉我在 Excel 中获取单元格值的字符串表示的工作方式吗?我只有 HSSF* 类可供使用。

4

3 回答 3

3

您需要DataFormatter 类。句柄根据应用到单元格的格式规则来格式化单元格的内容。它应该基本上为您提供 Excel 显示的内容

于 2011-09-29T10:39:45.777 回答
2

基于另一个线程 ,您可以先将单元格的类型设置为字符串,然后再获取其值

cell.setCellType(Cell.CELL_TYPE_STRING);

当我得到一个小数点后 15 位以上的数字时,我尝试过这种方法,它就像一个魅力。

于 2012-03-28T15:40:43.073 回答
0

不要比较字符串,而是比较双精度:

String excelDouble=301.0;
String external="301";
Double externalDouble=Double.parseDouble(external);
externalDouble.equals(excelDouble); //return true
于 2011-09-29T10:47:32.343 回答