如何在POI XSSF事件模型中获取单元格未格式化的值?

时间:2016-02-24 08:21:54

标签: excel apache-poi xssf

单元格A1具有 公式“= A2” ,并且格式化为显示1个小数点

单元格A2的 值为4.23

单元格A1显示4.2(格式化显示值)

单元格A2显示4.23(格式化显示值)

我的XSSF eventmodel sheetContentHandler类实现

  

public void cell(String cellReference,String formattedValue,   XSSFComment评论)

但对于单元格A1,formattedValue返回4.2,我想要检索 unformattedValue 4.23

我该怎么做? (我无法更改为usermodel,我有大量文件)

2 个答案:

答案 0 :(得分:2)

确定使用sheetContentHandler无法做到这一点(尽管如果你愿意,你可以得到实际的公式,但这不是我想要的)

唯一的解决方案是使用扩展DefaultHandler的SheetHandler类。

apache-poi网站上的示例代码: Example

答案 1 :(得分:0)

如果唯一的问题是数值格式化,您可以将自定义DataFormatter传递给XSSFSheetXMLHandler并继续使用SheetContentsHandler接口。

只需覆盖主formatRawCellContents(...)方法,不格式化值并返回原始值。 e.g。

@Override
public String formatRawCellContents(double value, int formatIndex, String formatString, boolean use1904Windowing) {
    return Double.toString(value);
}

这使日期变得更容易,并且你不必在扭转日期格式时使用,只需使用DateUtil.getJavaDate()作为值。