单元格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,我有大量文件)
答案 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()作为值。