documentation for formula

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352655 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Avik Sengupta 2002-05-28 12:42:57 +00:00
parent 7077f9e2e4
commit e3beaf84a4
2 changed files with 91 additions and 0 deletions

View File

@ -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"/>

View File

@ -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>