带有%符号的Apache POI读取单元格

何我可以读取带有%符号的单元吗? 如果我有105%的Excel单元格,POI告诉我,这必须被读作一个数字(这很好)。 这样做给我1.0d。 我预计会得到105或1.05d。

可能在Excel中你有1.05格式的百分比,导致它显示为105%。 如果POI不给你1.05,我会感到非常惊讶…也许你正在显示的数字四舍五入到小数点后一位?

当Excel把105%放在单元格中时,它实际存储的是数字(浮点)值1.05,以及一个格式化string

当你问兴趣点给你的单元格的价值时,它会提供Excel为你写的价值,在你的情况下1.05

POI也有一些类,试图根据应用于它们的格式化string来格式化单元格,以返回一个string,该string是Excel中显示的值(或者至less非常接近于该值)。 这个类是DataFormatter

明智的代码,你会想这样的事情:

// Create a formatter, do this once DataFormatter formatter = new DataFormatter(Locale.US); ..... for(Cell cell : row) { CellReference ref = new CellReference(cell); // eg "The value of B12 is 12.4%" System.out.println("The value of " + ref.formatAsString() + " is " + formatter.formatCellValue(cell)); } 

哪个是单元格A1在excel中包含105%,存储为1.05,会打印出“A1的值是105%”