You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2008/01/09 21:37:26 UTC
svn commit: r610553 -
/poi/trunk/src/documentation/content/xdocs/hssf/eval.xml
Author: nick
Date: Wed Jan 9 12:37:06 2008
New Revision: 610553
URL: http://svn.apache.org/viewvc?rev=610553&view=rev
Log:
Update documentation, and add section on whole-workbook recalculating
Modified:
poi/trunk/src/documentation/content/xdocs/hssf/eval.xml
Modified: poi/trunk/src/documentation/content/xdocs/hssf/eval.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/hssf/eval.xml?rev=610553&r1=610552&r2=610553&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/hssf/eval.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/hssf/eval.xml Wed Jan 9 12:37:06 2008
@@ -32,14 +32,17 @@
formulas in Excels sheets read-in, or created in POI. This document explains
how to use the API to evaluate your formulas.
</p>
- <note> This code currently lives the scratchpad area of the POI CVS repository.
+ <note> This code currently lives the scratchpad area of the POI SVN repository.
Ensure that you have the scratchpad jar or the scratchpad build area in your
- classpath before experimenting with this code.
+ classpath before experimenting with this code. You are advised
+ to make use of a recent SVN checkout, as new functions are
+ being supported fairly frequently.
</note>
</section>
<section><title>Status</title>
+ <anchor id="Status"/>
<p> The code currently provides implementations for all the arithmatic operators.
- It also provides implementations for approx. 20 built in
+ It also provides implementations for approx. 100 built in
functions in Excel. The framework however makes is easy to add
implementation of new functions. See the <link href="eval-devguide.html"> Formula
evaluation development guide</link> for details. </p>
@@ -53,6 +56,7 @@
</p>
<p>There are two ways in which you can use the HSSFFormulaEvalutator API.</p>
<section><title>Using HSSFFormulaEvaluator.<strong>evaluate</strong>(HSSFCell cell)</title>
+ <anchor id="Evaluate"/>
<source>
FileInputStream fis = new FileInputStream("c:/temp/test.xls");
HSSFWorkbook wb = new HSSFWorkbook(fis);
@@ -96,8 +100,12 @@
</p>
</section>
- <section><title>Using HSSFFormulaEvaluator.<strong>evaluateInCell</strong>(HSSFCell cell)
- </title>
+ <section><title>Using HSSFFormulaEvaluator.<strong>evaluateInCell</strong>(HSSFCell cell)</title>
+ <anchor id="EvaluateInCell"/>
+ <p><strong>evaluateInCell</strong>(HSSFCell cell) will check to
+ see if the supplied cell is a formula cell. If it isn't,
+ then no changes will be made to it. If it is, then the
+ formula is evaluated, and the new value saved into the cell.</p>
<source>
FileInputStream fis = new FileInputStream("/somepath/test.xls");
HSSFWorkbook wb = new HSSFWorkbook(fis);
@@ -132,12 +140,36 @@
break;
}
}
- </source>
-
- </section>
+ </source>
+ </section>
+ <section><title>Re-calculating all formulas in a Workbook</title>
+ <anchor id="EvaluateAll"/>
+ <source>
+FileInputStream fis = new FileInputStream("/somepath/test.xls");
+HSSFWorkbook wb = new HSSFWorkbook(fis);
+for(int sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++) {
+ HSSFSheet sheet = wb.getSheetAt(sheetNum);
+ HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb);
+
+ for(Iterator rit = s.rowIterator(); rit.hasNext();) {
+ HSSFRow r = (HSSFRow)rit.next();
+ evaluator.setCurrentRow(r);
+
+ for(Iterator cit = r.cellIterator(); cit.hasNext();) {
+ HSSFCell c = (HSSFCell)cit.next();
+ if(c.getCellType() == HSSFCell.CELL_TYPE_FORMULA) {
+ evaluator.evaluateInCell(c);
+ }
+ }
+ }
+}
+wb.write(new FileOutputStream("/somepath/changed.xls"));
+ </source>
+ </section>
</section>
<section><title>Performance Notes</title>
+ <anchor id="Performance"/>
<ul>
<li>Generally you should have to create only one HSSFFormulaEvaluator
instance per sheet, but there really is no overhead in creating
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org