在jexcel中进行公式解析的EmptyStackException

时间:2012-08-19 22:55:45

标签: java jexcelapi

我是jexcel api的新手,尚未成功添加公式。

每当我尝试编译公式时,我都会遇到编译错误:

Exception in thread "main" java.util.EmptyStackException
     at java.util.Stack.peek(Stack.java:102)
     at java.util.Stack.pop(Stack.java:84)
     at jxl.biff.formula.BinaryOperator.getOperands(BinaryOperator.java:61)
     at jxl.biff.formula.StringFormulaParser.parseCurrent(StringFormulaParser.java:240)
     at jxl.biff.formula.StringFormulaParser.parse(StringFormulaParser.java:113)
     at jxl.biff.formula.FormulaParser.parse(FormulaParser.java:161)
     at jxl.write.biff.FormulaRecord.initialize(FormulaRecord.java:160)
     at jxl.write.biff.FormulaRecord.setCellDetails(FormulaRecord.java:243)
     at jxl.write.biff.WritableSheetImpl.addCell(WritableSheetImpl.java:1199)

调用addCell
Formula formula;
formula = new Formula(column, row, string, arial);
sheet.addCell(formula);

如果我犯了一些明显的错误以及我可以采取哪些步骤来正确添加公式到我的电子表格中,请告诉我。

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,我的问题是我在表达式之前放了“=”,只是将其删除并且没有错误

答案 1 :(得分:-1)

/**
 * Looks at the object at the top of this stack without removing it
 * from the stack.
 *
 * @return     the object at the top of this stack (the last item
 *             of the <tt>Vector</tt> object).
 * @exception  EmptyStackException  if this stack is empty.
 */
public synchronized E peek() {
int len = size();

if (len == 0)
    throw new EmptyStackException();
return elementAt(len - 1);
}

所以你得到的错误类似于NullPointerException,区别在于你的堆栈是空的,所以你不能从中偷看任何东西。

这可能表明您的string

出现了问题

这是一个教程http://www.java-tips.org/other-api-tips/jexcel/how-to-create-an-excel-file.html,也谈论创建公式。

以下是另一个:http://r4r.co.in/java/apis/jexcel/basic/example/jexcel_basic_examples.php?id=774&option=Jexcel%20Example