diff options
-rw-r--r-- | src/documentation/xdocs/hssf/book.xml | 1 | ||||
-rw-r--r-- | src/documentation/xdocs/hssf/formula.xml | 90 |
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("formulaString") </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 |