我已阅读http://poi.apache.org/spreadsheet/eval.html,但我没有让它工作......
我的工作表中有一列包含以下值:
D+1 (pseudo-formula, to be evaluated in java)
01.01.0001 (string constant)
=A1 (formula where A1 contains pseudo formula 'D+2')
=A2 (formula where A2 contains '13.08.2013')
(对于像“D + 1”这样的字符串,我编写了一个解析器,在今天的日期替换D并将其递增一个。“01.01.0001”是一个神奇的值。“= A3”显然是一个excel公式)< / p>
如何安全地将所有这些值都添加到
的普通旧java字符串中???
所以对于上面的例子,我想得到:
"D+1"
"01.01.0001"
"D+2"
"13.08.2013"
答案 0 :(得分:1)
如果您手动执行此操作:您需要同时检查getCellType()和getCachedFormulaResultType()。该类型将让您计算出它是什么类型的单元格,用于格式化/单元格值提取等。对于公式,当您看到它是一个公式单元格时,您可以获取最后一个评估值及其类型
但是,根据您的需求,我认为可能有一个更简单的方法。我想你可以使用DataFormatter,特别是formatCellValue(Cell)
如果您使用DataFormatter,它将识别类型(包括公式),获取值,获取Excel应用的数字/日期格式规则,并应用它们。你得到一个字符串,这是最接近的Apache POI可以管理Excel中显示的内容,看起来像你想要的