Hi Amol,

Thanks a lot, it Work with the call to evaluator.setCurrentRow(row);


My friend used the current version in the scratchpad (I copy him at the cc 
field), where he find the following functions already implement Abs, Acos, 
Acosh, And, Asin, Asinh, Atan, Atan, Atanh, Cos, Cosh, Degrees, Dollar, Even, 
Exp, Int, Ln, Log, Log10, Odd, Or, Power, Radians, Sign, Sin, Sinh, Tan e Tanh.

He is going to join the project to implement the function Sum and Average (and 
others to the financial area).

But before any contribution, he would like to know. Is the code made like 
expected? He has to sign any agreement? 

[  ]´s

-----Mensagem original-----
De: Amol Deshmukh [mailto:[EMAIL PROTECTED] 
Enviada em: segunda-feira, 30 de maio de 2005 16:55
Para: POI Developers List
Assunto: Re: RES: cvs commit: jakarta-poi/src/documentation/content/xdocs/hssf 
eval.xml

Hi,

you need to call:
        evaluator.setCurrentRow(row);
before :
        HSSFFormulaEvaluator.CellValue cellValue = 
evaluator.evaluate(cell);


Also, check your formula, you are referring to Cell
"A0" which does not exist, since excel numbering
starts from 1 :)

So I think the formula that you intended to use should
be "B1+B2" instead of "A1+A0" since:

row=0 & col=1 => B1
row=1 & col=1 => B2
row=2 & col=1 => B3



I tried your program with the above changes and it
works fine.

On a related note, you shouldnt have to call
cell.setCellType(..), it is handled internally
depending on the type of argument to setCellValue(..).
(Although, calling setCellType(..) will not cause a
problem if called with the correct arg value.)


Regards,
~ amol





--- Glauco Vinicius Scheffel
<[EMAIL PROTECTED]> wrote:

> Hi,
> 
> I´m a subscriber of the POI list, to follow the
> product evolution since we use it in our GED tool. A
> friend o mine ask for assistance in using formulas
> but I never did this if POI (I just use to extract
> data). Do you know how can send his help request for
> the POI developers?
> 
> 
> TIA
> 
> 
>        
>                    H E L P    R E Q U E S T      I S
>   B E L O W
> 
> 
> 
> Hi !
> 
> I need a little assistence. I'm just trying to
> evaluate a simple formula using HSSF component. Take
> a look
> in the code below:
> 
> import org.apache.poi.hssf.usermodel.HSSFCell;
> import
> org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
> import org.apache.poi.hssf.usermodel.HSSFRow;
> import org.apache.poi.hssf.usermodel.HSSFSheet;
> import org.apache.poi.hssf.usermodel.HSSFWorkbook;
> import org.apache.poi.hssf.util.CellReference;
> 
> /**
>  * Simple test class.
>  * @version 1.0
>  */
> public class Formula {
>     
>     private HSSFWorkbook wb;
>     private HSSFSheet sheet;
>     
>     public Formula(){
>         this.wb = new HSSFWorkbook();
>         this.createSheet();
>     }
> 
>     private void createSheet(){
>         this.sheet = this.wb.createSheet();
>         this.createCells();
>     }
>     
>     private void createCells(){
>         HSSFRow r = null;
>         HSSFCell c = null;
>         
>         HSSFCell formula = null;
>         
>         this.sheet.createRow(0);
>         this.sheet.createRow(1);
>         this.sheet.createRow(2);
>        
>         c =
> this.sheet.getRow(0).createCell((short)1);
>         c.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
>        
>
this.sheet.getRow(0).getCell((short)1).setCellValue(10);
>         c =
> this.sheet.getRow(1).createCell((short)1);
>         c.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
>        
>
this.sheet.getRow(1).getCell((short)1).setCellValue(10);
>         c =
> this.sheet.getRow(2).createCell((short)1);
>         c.setCellType(HSSFCell.CELL_TYPE_FORMULA);
>         c.setCellFormula("A0+A1");
>         
>         HSSFFormulaEvaluator evaluator = new
> HSSFFormulaEvaluator(this.sheet,this.wb);
>         
>         CellReference cellReference = new
> CellReference(2,1);
>         HSSFRow row =
> sheet.getRow(cellReference.getRow());
>         HSSFCell cell =
> row.getCell(cellReference.getCol());
>      
>         if (cell == null){
>             System.out.println("its null");
>         } else if (cell.getCellType() ==
> HSSFCell.CELL_TYPE_FORMULA) {
>             System.out.println("Formula : "+
> cell.getCellFormula());
>         }
>        
>         HSSFFormulaEvaluator.CellValue cellValue =
> evaluator.evaluate(cell);
> 
>        
> System.out.println(cellValue.getNumberValue());
>     }
>     
>     public static void main(String args[]){
>         Formula f = new Formula();
>     }
> 
> }
> 
> 
> My program aborts with a NullPointerException:
> Formula : A0+A1
> java.lang.NullPointerException
>       at
>
org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.internalEvaluate(HSSFFormulaEvaluator.java:281)
>       at
>
org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluate(HSSFFormulaEvaluator.java:181)
>       at
>
com.datasul.dcl.formula.test.Formula.createCells(Formula.java:67)
>       at
>
com.datasul.dcl.formula.test.Formula.createSheet(Formula.java:30)
>       at
>
com.datasul.dcl.formula.test.Formula.<init>(Formula.java:25)
>       at
>
com.datasul.dcl.formula.test.Formula.main(Formula.java:73)
> Exception in thread "main" 
> 
> Did I make any mistake ? Can somebody help me ?
> 
> Thanks in advance !
> 
> 
> 
> 
> -----Mensagem original-----
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> Enviada em: terça-feira, 24 de maio de 2005 11:23
> Para: [EMAIL PROTECTED]
> Assunto: cvs commit:
> jakarta-poi/src/documentation/content/xdocs/hssf
> eval.xml
> 
> avik        2005/05/24 07:23:03
> 
>   Modified:    src/documentation/content/xdocs/hssf
> eval.xml
>   Log:
>   small update
>   
>   Revision  Changes    Path
>   1.3       +4 -5     
>
jakarta-poi/src/documentation/content/xdocs/hssf/eval.xml
>   
>   Index: eval.xml
>  
>
===================================================================
>   RCS file:
>
/home/cvs/jakarta-poi/src/documentation/content/xdocs/hssf/eval.xml,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- eval.xml        19 May 2005 10:36:06 -0000      1.2
>   +++ eval.xml        24 May 2005 14:23:03 -0000      1.3
>   @@ -15,11 +15,10 @@
>                               formulas in Excels sheets read-in, or created
> in POI. This document explains
>                               how to use the API to evaluate your formulas.
> 
>                       </p>
>   -                   <warning> This code currently lives in
> Bugzilla as 
>   -                           <link
>
href="http://issues.apache.org/bugzilla/show_bug.cgi?id=34828";>
> 
>   -                           bug 34828 </link>. It is expected to land in
> POI CVS in the scratchpad 
>   -                           area soon.
>   -                   </warning>
>   +                   <note> This code currently lives the
> scratchpad area of the POI CVS repository. 
>   +                           Ensure that you have the scratchpad jar or
> the scratchpad build area in your
>   +                           classpath before experimenting with this
> code.
>   +                   </note>
>               </section>
>               <section><title>Status</title>
>                       <p>     The code currently provides
> implementations for all the arithmatic operators.
>   
>   
>   
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> Mailing List:   
> http://jakarta.apache.org/site/mail2.html#poi
> The Apache Jakarta POI Project:
> http://jakarta.apache.org/poi/
> 
> 
=== message truncated ===


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/

Reply via email to