2010-09-29 119 views
4

我想获得一个Numeric单元格的值作为一个简单的字符串。如何获取Apache POI中单元格的数字的格式化值?

假设有细胞的类型是数字与值90%。 现在我不能使用cell.getStringCellValue(),因为它会抛出异常。 我也不能使用cell.getNumericCellValue(),因为它会返回我.9,而不是90%

我想在DB是VARCHAR2类型来存储的,所以我想只字符串值。

我不能改变xls细胞类型作为其最终用户的工作,我有自己的代码来处理这个问题。

而且格式器简化版,工作也有可能是在XLS不同的细胞类型... DD:MM,DD:MM:SS,公式等

我要的是,无论细胞类型是我需要得到它的价值作为简单的字符串。

回答

3

您可以强制值将返回用低于

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

它为我工作,即使我的小区是HSSFCell

我也试过这个转换 - 这工作。

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

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

HSSFDataFormatter hdf = new HSSFDataFormatter(); System.out.println(hdf.formatCellValue(mycell)); 在我的情况下,“myCell”参数的类型为HSSFCell,但hdf.formatCellValue(mycell)将“mycell”作为Cell的一种类型。我试着类型转换它的细胞,但它抛出一个异常:java.lang.ClassCastException .....其实我的代码是用HSSF API编写... – Dhananjay 2010-09-29 17:17:53

+0

@ user371238:看我的更新 – JoseK 2010-10-01 05:11:26

+0

我试着用HSSF细胞......它作品,但是当我与Java 1.6的一个独立的Java类中运行....我有我的门户6.1,其中我必须使用Java 1.5的应用......它抛出异常有.. – Dhananjay 2010-10-01 09:19:01

1

尝试

cell.getRichStringCellValue().getString();  

Have a look at this example
Here is Doc

+0

cell.getRichStringCellValue().getString();它didn,吨工作...错误:-lang.NoSuchMethodError我使用poi 3.6 jar – Dhananjay 2010-09-29 10:31:28

+0

@ user371238你检查了示例的代码,尝试与旧版本的jar。文件显示的方法,它在那里。 – 2010-09-29 10:32:44

相关问题