aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/documentation/xdocs/hssf/book.xml1
-rw-r--r--src/documentation/xdocs/hssf/formula.xml90
2 files changed, 91 insertions, 0 deletions
diff --git a/src/documentation/xdocs/hssf/book.xml b/src/documentation/xdocs/hssf/book.xml
index 672b815517..85167cf983 100644
--- a/src/documentation/xdocs/hssf/book.xml
+++ b/src/documentation/xdocs/hssf/book.xml
@@ -12,6 +12,7 @@
<menu label="HSSF">
<menu-item label="Quick Guide" href="quick-guide.html"/>
<menu-item label="HOWTO" href="how-to.html"/>
+ <menu-item label="Formula Support" href="formula.html" />
<menu-item label="Use Case" href="use-case.html"/>
<menu-item label="Pictorial Docs" href="diagrams.html"/>
<menu-item label="Alternatives" href="alternatives.html"/>
diff --git a/src/documentation/xdocs/hssf/formula.xml b/src/documentation/xdocs/hssf/formula.xml
new file mode 100644
index 0000000000..d3003d8b94
--- /dev/null
+++ b/src/documentation/xdocs/hssf/formula.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "../dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Formula Support</title>
+ <authors>
+ <person email="avik@apache.org" name="Avik Sengupta" id="AS"/>
+ </authors>
+ </header>
+ <body>
+ <section title="Introduction">
+ <p>
+ This document describes the current state of formula support in POI.
+ The information in this document applies to the 2.0-dev version of POI (i.e. CVS HEAD).
+ Since this area is a work in progress, this document will be updated with new features as and
+ when they are added.
+ </p>
+
+ </section>
+ <section title="The basics">
+ <p>
+ In org.apache.poi.hssf.usermodel.HSSFCell
+ <strong> setCellFormula(&quot;formulaString&quot;) </strong> is used to add a formula to sheet and
+ <strong> getCellFormula() </strong> is used to retrieve the string representation of a formula.
+ </p>
+ <p>
+ We aim to support the complete excel grammer for formulas. Thus, the string that you pass in
+ to the <b> setCellFormula </b> call should be what you expect to type into excel. Also, note
+ that you should NOT add a "=" to the front of the string.
+ </p>
+ </section>
+ <section title="Supported Features">
+ <ul>
+ <li>Cell References</li>
+ <li>String, integer and floating point literals</li>
+ <li>Area references</li>
+ <li>Relative or absolute references</li>
+ <li>Arithmetic Operators</li>
+ <li>Sheet Functions</li>
+ </ul>
+ </section>
+ <section title="Partially supported">
+ <ul>
+ <li>
+ The formula parser now has the ability to parse formulas containing strings. However
+ formulas that return a string value are not yet supported.
+ </li>
+ <li>Formula tokens in Excel are stored in one of three possible <em> classes </em>:
+ Reference, Value and Array. Based on the location of a token, its class can change
+ in complicated and undocumented ways. While we have support for most cases, we
+ are not sure if we have covered all bases (since there is no documentation for this area.)
+ We would therefore like you to report any
+ occurence of #VALUE! in a cell upon opening a POI generated workbook in excel. (Check that
+ typing the formula into Excel directly gives a valid result.)
+ </li>
+
+ </ul>
+ </section>
+ <section title="Not yet supported">
+ <ul>
+ <li>Array formulas</li>
+ <li>Formulas with logical operations (IF) </li>
+ <li>Sheet References in formulas</li>
+ <li>Everything else :) </li>
+ </ul>
+ </section>
+
+ <section title="Internals">
+ <p>
+ Formulas in Excel are stored as sequences of tokens in Reverse Polish Notation order. The
+ <link href="http://sc.openoffice.org/excelfileformat.pdf">open office XLS spec</link> is the best
+ documentation you will find for the format.
+ </p>
+
+ <p>
+ The tokens used by excel are modelled as individual *Ptg classes in the <strong>
+ org.apache.poi.hssf.record.formula</strong> package.
+ </p>
+ <p>
+ The task of parsing a formula string into an array of RPN ordered tokens is done by the <strong>
+ org.apache.poi.hssf.record.formula.FormulaParser</strong> class. This class implements a hand
+ written recursive descent parser.
+ </p>
+ <p>Check out the <link href="http://jakarta.apache.org/poi/javadocs/">javadocs </link> for details.
+ </p>
+ </section>
+
+ </body>
+</document> \ No newline at end of file