fix for bug 9802, we write simple sum ptg, tho we can also read attr ptg. trying to write an attr ptg messes up the class change algo.

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352687 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Avik Sengupta 2002-06-12 12:40:03 +00:00
parent 8908e20c5d
commit 1ef8d27a1e
4 changed files with 12 additions and 5 deletions

View File

@ -142,6 +142,7 @@ public class FormulaViewer
StringBuffer buf = new StringBuffer(); StringBuffer buf = new StringBuffer();
if (token instanceof ExpPtg) return;
buf.append(name=((OperationPtg) token).toFormulaString()); buf.append(name=((OperationPtg) token).toFormulaString());
buf.append(sep); buf.append(sep);
switch (token.getPtgClass()) { switch (token.getPtgClass()) {

View File

@ -446,7 +446,7 @@ public abstract class AbstractFunctionPtg extends OperationPtg {
functionData[0][0]=new Byte(Ptg.CLASS_VALUE);functionData[0][1]=new byte[] {Ptg.CLASS_REF};functionData[0][2]=new Integer(-1); functionData[0][0]=new Byte(Ptg.CLASS_VALUE);functionData[0][1]=new byte[] {Ptg.CLASS_REF};functionData[0][2]=new Integer(-1);
functionData[2][0]=new Byte(Ptg.CLASS_VALUE);functionData[2][1]=new byte[] {Ptg.CLASS_VALUE};functionData[2][2]=new Integer(1); functionData[2][0]=new Byte(Ptg.CLASS_VALUE);functionData[2][1]=new byte[] {Ptg.CLASS_VALUE};functionData[2][2]=new Integer(1);
functionData[3][0]=new Byte(Ptg.CLASS_VALUE);functionData[3][1]=new byte[] {Ptg.CLASS_VALUE};functionData[3][2]=new Integer(1); functionData[3][0]=new Byte(Ptg.CLASS_VALUE);functionData[3][1]=new byte[] {Ptg.CLASS_VALUE};functionData[3][2]=new Integer(1);
functionData[4][0]=new Byte(Ptg.CLASS_REF);functionData[4][1]=new byte[] {Ptg.CLASS_REF};functionData[4][2]=new Integer(-1); functionData[4][0]=new Byte(Ptg.CLASS_VALUE);functionData[4][1]=new byte[] {Ptg.CLASS_REF};functionData[4][2]=new Integer(-1);
functionData[5][0]=new Byte(Ptg.CLASS_VALUE);functionData[5][1]=new byte[] {Ptg.CLASS_REF};functionData[5][2]=new Integer(-1); functionData[5][0]=new Byte(Ptg.CLASS_VALUE);functionData[5][1]=new byte[] {Ptg.CLASS_REF};functionData[5][2]=new Integer(-1);
functionData[6][0]=new Byte(Ptg.CLASS_VALUE);functionData[6][1]=new byte[] {Ptg.CLASS_REF};functionData[6][2]=new Integer(-1); functionData[6][0]=new Byte(Ptg.CLASS_VALUE);functionData[6][1]=new byte[] {Ptg.CLASS_REF};functionData[6][2]=new Integer(-1);
functionData[7][0]=new Byte(Ptg.CLASS_VALUE);functionData[7][1]=new byte[] {Ptg.CLASS_REF};functionData[7][2]=new Integer(-1); functionData[7][0]=new Byte(Ptg.CLASS_VALUE);functionData[7][1]=new byte[] {Ptg.CLASS_REF};functionData[7][2]=new Integer(-1);

View File

@ -264,17 +264,17 @@ public class FormulaParser {
private Ptg function(String name,byte numArgs) { private Ptg function(String name,byte numArgs) {
Ptg retval = null; Ptg retval = null;
retval = new FuncVarPtg(name,numArgs);
if (numArgs == 1 && name.equals("SUM")) { /** if (numArgs == 1 && name.equals("SUM")) {
AttrPtg ptg = new AttrPtg(); AttrPtg ptg = new AttrPtg();
ptg.setData((short)1); //sums don't care but this is what excel does. ptg.setData((short)1); //sums don't care but this is what excel does.
ptg.setSum(true); ptg.setSum(true);
retval = ptg; retval = ptg;
} else { } else {
retval = new FuncVarPtg(name,numArgs); retval = new FuncVarPtg(name,numArgs);
} }*/
return retval; return retval;
} }
/** get arguments to a function */ /** get arguments to a function */

View File

@ -775,6 +775,12 @@ extends TestCase {
c=r.createCell( (short) 5); c=r.createCell( (short) 5);
c.setCellFormula("SIN(A2)"); c.setCellFormula("SIN(A2)");
c=r.createCell( (short) 6);
c.setCellFormula("SUM(A2:A3)");
c=r.createCell( (short) 7);
c.setCellFormula("SUM(A2,A3)");
r = s.createRow((short) 1);c=r.createCell( (short) 0); c.setCellValue(2.0); r = s.createRow((short) 1);c=r.createCell( (short) 0); c.setCellValue(2.0);
r = s.createRow((short) 2);c=r.createCell( (short) 0); c.setCellValue(3.0); r = s.createRow((short) 2);c=r.createCell( (short) 0); c.setCellValue(3.0);