如何获取Apache POI中单元格的数字格式化值?

时间:2010-09-29 07:39:34

标签: java apache-poi

我想将Numeric单元格的值作为简单字符串。

假设单元格的类型为数值且值为90%。 现在我不能使用cell.getStringCellValue()因为它会抛出异常。 我也无法使用cell.getNumericCellValue()因为它会返回.9而不是90%

我想存储在varchar2类型的db中,所以我只想要字符串中的值。

我无法将xls中的单元格类型更改为最终用户作业,我必须在代码本身中处理此问题。

格式化程序也不能很好地工作,因为xls中可能有不同的单元格类型... dd:mm,dd:mm:ss,formula等。

我想要的只是无论细胞类型是什么,我都需要将其值作为简单的String。

3 个答案:

答案 0 :(得分:3)

您可以使用以下方法强制将值作为String返回

HSSFDataFormatter hdf = new HSSFDataFormatter();
System.out.println (hdf.formatCellValue(mycell));

将返回“90%”

此方法的API位于http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/DataFormatter.html#formatCellValue%28org.apache.poi.ss.usermodel.Cell%29

即使使用HSSFCell也可以直接使用

即使我的Cell是HSSFCell,它也适用于我

我也试过这个演员 - 这很有效。

HSSFCell cell1 = (HSSFCell) row1.getCell(2);

HSSFDataFormatter hdf = new HSSFDataFormatter();
System.out.println ("formatted "+ hdf.formatCellValue(cell1));

答案 1 :(得分:1)

尝试

cell.getRichStringCellValue ().getString();    

Have a look at this example
Here is Doc

答案 2 :(得分:0)

以下代码使用的是 2021 年的当前 apache poi 版本。现在 DataFormatter 可用于 XSSF (Office Open XML *.xlsx) 以及 {{1 }} (BIFF HSSF) 格式。它也应该与 FormulaEvaluator 一起使用以从公式单元格中获取值。

*.xls