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