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

时间:2011-11-01 20:51:03

标签: excel apache-poi

我可以读取带有%符号的单元格吗?如果我在Excel单元格中有105%,则POI告诉我必须将其作为数字读取(这很好)。这样做给了我1.0d。我希望得到105或1.05d。

2 个答案:

答案 0 :(得分:1)

可能在Excel中,您将1.05格式化为百分比,使其显示为105%。如果POI没有给你1.05,我会感到非常惊讶...也许你显示的数字四舍五入到小数点后一位?

答案 1 :(得分:1)

当Excel在单元格中放置105%时,实际存储的是数字(浮点)值1.05以及格式化字符串

当您要求POI为您提供单元格的值时,它将提供Excel为您编写的值,在您的情况下为1.05

POI还有一些类,它们尝试根据应用于它们的格式化字符串格式化单元格,以返回一个字符串,该字符串是Excel中显示的值(或至少非常接近该值)。要做的是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包含105%的excel,存储为1.05,将打印“A1的值为105%”