Modified: poi/site/publish/components/spreadsheet/excelant.html URL: http://svn.apache.org/viewvc/poi/site/publish/components/spreadsheet/excelant.html?rev=1836244&r1=1836243&r2=1836244&view=diff ============================================================================== --- poi/site/publish/components/spreadsheet/excelant.html (original) +++ poi/site/publish/components/spreadsheet/excelant.html Wed Jul 18 23:27:21 2018 @@ -1,223 +1,304 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<!--*** This is a generated file. Do not edit. ***--> -<link rel="stylesheet" href="../skin/tigris.css" type="text/css"> -<link rel="stylesheet" href="../skin/mysite.css" type="text/css"> -<link rel="stylesheet" href="../skin/site.css" type="text/css"> -<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> <title>ExcelAnt - Ant Tasks for Validating Excel Spreadsheets</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../images/favicon.ico"> </head> -<body bgcolor="white" class="composite"> -<!--================= start Banner ==================--> -<div id="banner"> -<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> -<tbody> -<tr> -<!--================= start Group Logo ==================--> -<td width="50%" align="left"> -<div class="groupLogo"> -<a href="https://www.apache.org"><img border="0" class="logoImage" alt="The Apache Software Foundation" src="../resources/images/asf_logo.png"></a> -</div> -</td> -<!--================= end Group Logo ==================--> -<!--================= start Project Logo ==================--><td width="50%" align="right"> -<div align="right" class="projectLogo"> -<a href="https://donate.apache.org/"><img border="0" class="logoImage" alt="Support Apache" src="../resources/images/support-asf.png" width="120" height="120" title="Your donation helps The Apache Software Foundation ensure its community-driven software remains available to billions of users at absolutely no cost."></a><a href="https://poi.apache.org/"><img border="0" class="logoImage" alt="Apache POI" src="../resources/images/pb-poi.png" width="120" height="120" title="Apache POI - the Java API for Microsoft Documents"></a> -</div> -</td> -<!--================= end Project Logo ==================--> -</tr> -</tbody> -</table> -</div> -<!--================= end Banner ==================--> -<!--================= start Main ==================--> -<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> -<tbody> -<!--================= start Status ==================--> -<tr class="status"> -<td> -<!--================= start BreadCrumb ==================--><a href="https://www.apache.org/">Apache</a> | <a href="https://poi.apache.org/">POI</a><a href=""></a> -<!--================= end BreadCrumb ==================--></td><td id="tabs"> -<!--================= start Tabs ==================--> -<div class="tab"> -<span class="selectedTab"><a class="base-selected" href="../index.html">Home</a></span> | <script language="Javascript" type="text/javascript"> -function printit() { -if (window.print) { - window.print() ; -} else { - var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH="0" HEIGHT="0" CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; -document.body.insertAdjacentHTML('beforeEnd', WebBrowser); - WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box WebBrowser1.outerHTML = ""; -} -} -</script><script language="Javascript" type="text/javascript"> -var NS = (navigator.appName == "Netscape"); -var VERSION = parseInt(navigator.appVersion); -if (VERSION > 3) { - document.write(' <a title="PRINT this page OUT" href="javascript:printit()">PRINT</a>'); -} -</script> -</div> -<!--================= end Tabs ==================--> -</td> -</tr> -</tbody> -</table> -<!--================= end Status ==================--> -<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> -<tbody> -<tr valign="top"> -<!--================= start Menu ==================--> -<td id="leftcol"> -<div id="navcolumn"> -<div class="menuBar"> -<div class="menu"> -<span class="menuLabel">Apache POI</span> - -<div class="menuItem"> -<a href="../index.html">Top</a> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="https://www.apache.org">Apache Software Foundation</a> > <a href="https://poi.apache.org">Apache POI</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="https://www.apache.org"><img class="logoImage" alt="Apache Software Foundation" src="../../images/group-logo.png" title="The Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy."></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="https://poi.apache.org"><img class="logoImage" alt="Apache POI" src="../../images/project-logo.png" title="Apache POI is well-known in the Java field as a library for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Word, Visio, Publisher and Outlook. It supports both the older (OLE2) and new (OOXML - Office Open XML) formats."></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="poi.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google"> + <input name="Search" value="Search" type="submit"> +</form> </div> - +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="../../index.html">Home</a> +</li> +<li> +<a class="unselected" href="../../help/index.html">Help</a> +</li> +<li class="current"> +<a class="selected" href="../../components/index.html">Component APIs</a> +</li> +<li> +<a class="unselected" href="../../devel/index.html">Getting Involved</a> +</li> +</ul> +<!--+ + |end Tabs + +--> </div> -<div class="menu"> -<span class="menuLabel">HSSF+XSSF</span> - -<div class="menuItem"> -<a href="index.html">Overview</a> </div> - -<div class="menuItem"> -<a href="quick-guide.html">Quick Guide</a> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> </div> - -<div class="menuItem"> -<a href="how-to.html">HOWTO</a> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> + + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Component APIs</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/index.html">Overview</a> </div> - -<div class="menuItem"> -<a href="converting.html">HSSF to SS Converting</a> +<div class="menuitem"> +<a href="../../apidocs/index.html">Javadocs</a> </div> - -<div class="menuItem"> -<a href="formula.html">Formula Support</a> +<div onclick="SwitchMenu('menu_selected_1.1.3', '../../skin/')" id="menu_selected_1.1.3Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Excel (HSSF/XSSF)</div> +<div id="menu_selected_1.1.3" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/spreadsheet/index.html">Overview</a> </div> - -<div class="menuItem"> -<a href="eval.html">Formula Evaluation</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a> </div> - -<div class="menuItem"> -<a href="eval-devguide.html">Eval Dev Guide</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/how-to.html">HOWTO</a> </div> - -<div class="menuItem"> -<a href="examples.html">Examples</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/converting.html">HSSF to SS Converting</a> </div> - -<div class="menuItem"> -<a href="use-case.html">Use Case</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/formula.html">Formula Support</a> </div> - -<div class="menuItem"> -<a href="diagrams.html">Pictorial Docs</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a> </div> - -<div class="menuItem"> -<a href="limitations.html">Limitations</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a> </div> - -<div class="menuItem"> -<a href="user-defined-functions.html">User Defined Functions</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/examples.html">Examples</a> </div> - -<div class="menuItem"> -<span class="menuSelected">ExcelAnt Tests</span> +<div class="menuitem"> +<a href="../../components/spreadsheet/use-case.html">Use Case</a> </div> - +<div class="menuitem"> +<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a> </div> -<div class="menu"> -<span class="menuLabel">Contributer's Guide</span> - -<div class="menuItem"> -<a href="hacking-hssf.html">Hacking HSSF</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/limitations.html">Limitations</a> </div> - -<div class="menuItem"> -<a href="record-generator.html">Record Generator</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/user-defined-functions.html">User Defined Functions</a> </div> - -<div class="menuItem"> -<a href="chart.html">Charts</a> +<div class="menupage"> +<div class="menupagetitle">ExcelAnt Tests</div> </div> - +<div class="menuitem"> +<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a> </div> -<center> -<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png"></a> -</center> -</div> -</div> -<form target="_blank" action="https://www.google.com/search" method="get"> -<table summary="search" border="0" cellspacing="0" cellpadding="0"> -<tr> -<td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"> - Search Apache POI<br> -<input value="poi.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="GO" type="submit"></td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> -</tr> -</table> -</form> -</td> -<!--================= end Menu ==================--> -<!--================= start Content ==================--><td> -<div id="bodycol"> -<div class="app"> -<div align="center"> -<h1>ExcelAnt - Ant Tasks for Validating Excel Spreadsheets</h1> +<div class="menuitem"> +<a href="../../components/spreadsheet/record-generator.html">Record Generator</a> </div> -<div class="h3"> - - - -<a name="ExcelAnt+-+Ant+Tasks+for+Validating+Excel+Spreadsheets"></a> -<div class="h3"> -<h3>ExcelAnt - Ant Tasks for Validating Excel Spreadsheets<a title="Permanent link" class="headerlink" href="#ExcelAnt+-+Ant+Tasks+for+Validating+Excel+Spreadsheets">#</a> -</h3> +<div class="menuitem"> +<a href="../../components/spreadsheet/chart.html">Charts</a> </div> +</div> +<div onclick="SwitchMenu('menu_1.1.4', '../../skin/')" id="menu_1.1.4Title" class="menutitle">PowerPoint (HSLF/XSLF)</div> +<div id="menu_1.1.4" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/slideshow/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/how-to-shapes.html">HSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/xslf-cookbook.html">XSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/ppt-file-format.html">PPT File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Word (HWPF/XWPF)</div> +<div id="menu_1.1.5" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/document/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide.html">HWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide-xwpf.html">XWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/docoverview.html">HWPF Format</a> +</div> +<div class="menuitem"> +<a href="../../components/document/projectplan.html">HWPF Project plan</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hsmf/index.html">Outlook (HSMF)</a> +</div> +<div class="menuitem"> +<a href="../../components/diagram/index.html">Visio (HDGF+XDGF)</a> +</div> +<div onclick="SwitchMenu('menu_1.1.8', '../../skin/')" id="menu_1.1.8Title" class="menutitle">Publisher (HPBF)</div> +<div id="menu_1.1.8" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpbf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpbf/file-format.html">File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.9', '../../skin/')" id="menu_1.1.9Title" class="menutitle">OLE2 Filesystem (POIFS)</div> +<div id="menu_1.1.9" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/poifs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/embeded.html">Embedded Documents</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/fileformat.html">File System Documentation</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/usecases.html">Use Cases</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/design.html">Design</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.10', '../../skin/')" id="menu_1.1.10Title" class="menutitle">OLE2 Document Props (HPSF)</div> +<div id="menu_1.1.10" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpsf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/thumbnails.html">Thumbnails</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/internals.html">Internals</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/todo.html">To Do</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hmef/index.html">TNEF (HMEF) for winmail.dat</a> +</div> +<div class="menuitem"> +<a href="../../components/oxml4j/index.html">OpenXML4J (OOXML)</a> +</div> +<div class="menuitem"> +<a href="../../components/logging.html">Logging framework</a> +</div> +</div> +<div id="credit"></div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"> +<a href="https://donate.apache.org/"><img border="0" title="Support Apache" alt="Support Apache - logo" src="../../images/support-asf.png" style="width: 125px;height: 125px;"></a> +</div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<h1>ExcelAnt - Ant Tasks for Validating Excel Spreadsheets</h1> +<div id="front-matter"></div> - +<a name="ExcelAnt+-+Ant+Tasks+for+Validating+Excel+Spreadsheets"></a> +<h2 class="boxed">ExcelAnt - Ant Tasks for Validating Excel Spreadsheets</h2> +<div class="section"> <a name="Introduction"></a> -<div class="h4"> -<h4>Introduction<a title="Permanent link" class="headerlink" href="#Introduction">#</a> -</h4> -</div> - +<h3 class="boxed">Introduction</h3> <p>ExcelAnt is a set of Ant tasks that make it possible to verify or test a workbook without having to write Java code. Of course, the tasks themselves are written in Java, but to use this framework you only need to know a little bit about Ant.</p> - <p>This document covers the basic usage and set up of ExcelAnt.</p> - <p>This document will assume basic familiarity with Ant and Ant build files.</p> - - <a name="Setup"></a> -<div class="h4"> -<h4>Setup<a title="Permanent link" class="headerlink" href="#Setup">#</a> -</h4> -</div> - +<h3 class="boxed">Setup</h3> <p>To start with ExcelAnt, you'll need to have the POI 3.8 or higher jar files. If you test only .xls workbooks then you need to have the following jars in your path:</p> - <ul> <li>poi-excelant-$version-YYYYDDMM.jar</li> @@ -227,9 +308,7 @@ workbooks then you need to have the foll <li>poi-ooxml-$version-YYYYDDMM.jar</li> </ul> - <p> If you evaluate .xlsx workbooks then you need to add these: </p> - <ul> <li>poi-ooxml-schemas-$version-YYYYDDMM.jar</li> @@ -237,10 +316,8 @@ workbooks then you need to have the foll <li>xmlbeans.jar</li> </ul> - <p>For example, if you have these jars in a lib/ dir in your project, your build.xml might look like this:</p> - <pre class="code"> <property name="lib.dir" value="lib" /> @@ -249,28 +326,21 @@ workbooks then you need to have the foll <pathelement location="${lib.dir}/poi-3.8-beta1-20101230.jar" /> <pathelement location="${lib.dir}/poi-ooxml-3.8-beta1-20101230.jar" /> </path> -</pre> - +</pre> <p>Next, you'll need to define the Ant tasks. There are several ways to use ExcelAnt:</p> - - <ul> <li>The traditional way:</li> </ul> - <pre class="code"> <typedef resource="org/apache/poi/ss/excelant/antlib.xml" classpathref="excelant.path" /> </pre> - <p> Where excelant.path refers to the classpath with POI jars. Using this approach the provided extensions will live in the default namespace. Note that the default task/typenames (evaluate, test) may be too generic and should either be explicitly overridden or used with a namespace. </p> - <ul> <li>Similar, but assigning a namespace URI:</li> -</ul> - +</ul> <pre class="code"> <project name="excelant-demo" xmlns:poi="antlib:org.apache.poi.ss.excelant"> @@ -285,33 +355,19 @@ workbooks then you need to have the foll </target> </project> </pre> - - - <a name="A+Simple+Example"></a> -<div class="h4"> -<h4>A Simple Example<a title="Permanent link" class="headerlink" href="#A+Simple+Example">#</a> -</h4> -</div> - +<h3 class="boxed">A Simple Example</h3> <p>The simplest example of using Excel is the ability to validate that POI is giving you back the value you expect it to. Does this mean that POI is inaccurate? Hardly. There are cases where POI is unable to evaluate cells for a variety of reasons. If you need to write code to integrate a worksheet into an app, you may want to know that it's going to work before you actually try to write that code. ExcelAnt helps with that.</p> - - <p>Consider the mortgage-calculation.xls file found in the Examples (/examples/src/org/apache/poi/ss/examples/excelant/simple-mortgage-calculation.xls). This sheet is shown below:</p> - - - - <p>This sheet calculates the principal and interest payment for a mortgage based on the amount of the loan, term and rate. To write a simple ExcelAnt test you need to tell ExcelAnt about the file like this:</p> - <pre class="code"> <property name="xls.file" value="" /> @@ -323,9 +379,6 @@ workbooks then you need to have the foll </excelant> </target> </pre> - - - <p>This code sets up ExcelAnt to access the file defined in the ant property xls.file. Then it creates a 'test' named 'checkValue'. Finally it tries to evaluate the B4 on the sheet named 'MortgageCalculator'. There are some assumptions @@ -333,11 +386,7 @@ workbooks then you need to have the foll numerically oriented sheets. The <evaluate> task is actually evaluating the cell as a formula using a FormulaEvaluator instance from POI. Therefore it will fail if you point it to a cell that doesn't contain a formula or a test a plain old number.</p> - - <p>Having said all that, here is what the output looks like:</p> - - <pre class="code"> simpleTest: [excelant] ExcelAnt version 0.4.0 Copyright 2011 @@ -346,16 +395,8 @@ simpleTest: BUILD SUCCESSFUL Total time: 391 milliseconds </pre> - - - - <a name="Setting+Values+into+a+Cell"></a> -<div class="h4"> -<h4>Setting Values into a Cell<a title="Permanent link" class="headerlink" href="#Setting+Values+into+a+Cell">#</a> -</h4> -</div> - +<h3 class="boxed">Setting Values into a Cell</h3> <p>So now we know that at a minimum POI can use our sheet to calculate the existing value. This is an important point: in many cases sheets have dependencies, i.e., cells they reference. As is often the case, these cells may have dependencies, which may have dependencies, etc. @@ -364,11 +405,8 @@ Total time: 391 milliseconds verifies that we can rely on POI to retrieve the default value, based on the stored values of the sheet. Now we want to know if we can manipulate those dependencies and verify the output.</p> - - <p>To verify that we can manipulate cell values, we need a way in ExcelAnt to set a value. This is provided by the following task types:</p> - <ul> <li>setDouble() - sets the specified cell as a double.</li> @@ -378,26 +416,18 @@ Total time: 391 milliseconds <li>setString() = sets the specified cell as a String.</li> </ul> - - <p>For the purposes of this example we'll use the <setDouble> task. Let's start with a $240,000, 30 year loan at 11% (let's pretend it's like 1984). Here is how we will set that up:</p> - - <pre class="code"> <setDouble cell="'MortgageCalculator'!$B$1" value="240000"/> <setDouble cell="'MortgageCalculator'!$B$2" value ="0.11"/> <setDouble cell="'MortgageCalculator'!$B$3" value ="30"/> <evaluate showDelta="true" cell="'MortgageCalculator'!$B$4" expectedValue="2285.576149" precision="1.0e-4" /> </pre> - - <p>Don't forget that we're verifying the behavior so you need to put all this into the sheet. That is how I got the result of $2,285 and change. So save your changes and run it; you should get the following: </p> - - <pre class="code"> Buildfile: C:\opt\eclipse\workspaces\excelant\excelant.examples\build.xml simpleTest: @@ -407,23 +437,12 @@ simpleTest: BUILD SUCCESSFUL Total time: 406 milliseconds </pre> - - - - <a name="Getting+More+Details"></a> -<div class="h4"> -<h4>Getting More Details<a title="Permanent link" class="headerlink" href="#Getting+More+Details">#</a> -</h4> -</div> - - +<h3 class="boxed">Getting More Details</h3> <p>This is great, it's working! However, suppose you want to see a little more detail. The ExcelAnt tasks leverage the Ant logging so you can add the -verbose and -debug flags to the Ant command line to get more detail. Try adding -verbose. Here is what you should see:</p> - - <pre class="code"> simpleTest: [excelant] ExcelAnt version 0.4.0 Copyright 2011 @@ -434,17 +453,12 @@ simpleTest: BUILD SUCCESSFUL Total time: 406 milliseconds </pre> - - - <p>We see a little more detail. Notice that we see that there is a setting for global precision. Up until now we've been setting the precision on each evaluate that we call. This is obviously useful but it gets cumbersome. It would be better if there were a way that we could specify a global precision - and there is. There is a <precision> tag that you can specify as a child of the <excelant> tag. Let's go back to our original task we set up earlier and modify it:</p> - - <pre class="code"> <property name="xls.file" value="" /> @@ -457,15 +471,11 @@ Total time: 406 milliseconds </excelant> </target> </pre> - - <p>In this example we have set the global precision to 1.0e-3. This means that in the absence of something more stringent, all tests in the task will use the global precision. We can still override this by specifying the precision attribute of all of our <evaluate> task. Let's first run this task with the global precision and the -verbose flag:</p> - - <pre class="code"> simpleTest: [excelant] ExcelAnt version 0.4.0 Copyright 2011 @@ -476,16 +486,11 @@ simpleTest: [evaluate] Using global precision of 0.0010 [excelant] 1/1 tests passed. </pre> - - - <p>As the output clearly shows, the test itself has no precision but there is the global precision. Additionally, it tells us we're going to use that more stringent global value. Now suppose that for this test we want to use a more stringent precision, say 1.0e-4. We can do that by adding the precision attribute back to the <evaluate> task:</p> - - <pre class="code"> <excelant fileName="${xls.file}"> <precision value="1.0e-3"/> @@ -497,12 +502,8 @@ simpleTest: </test> </excelant> </pre> - - - <p>Now when you re-run this test with the verbose flag you will see that your test ran and passed with the higher precision:</p> - <pre class="code"> simpleTest: [excelant] ExcelAnt version 0.4.0 Copyright 2011 @@ -515,23 +516,14 @@ simpleTest: BUILD SUCCESSFUL Total time: 390 milliseconds </pre> - - - <a name="Leveraging+User+Defined+Functions"></a> -<div class="h4"> -<h4>Leveraging User Defined Functions<a title="Permanent link" class="headerlink" href="#Leveraging+User+Defined+Functions">#</a> -</h4> -</div> - +<h3 class="boxed">Leveraging User Defined Functions</h3> <p>POI has an excellent feature (besides ExcelAnt) called <a href="user-defined-functions.html">User Defined Functions</a>, that allows you to write Java code that will be used in place of custom VB code or macros is a spreadsheet. If you have read the documentation and written your own FreeRefFunction implmentations, ExcelAnt can make use of this code. For each <excelant> task you define you can nest a <udf> tag which allows you to specify the function alias and the class name.</p> - - <p>Consider the previous example of the mortgage calculator. What if, instead of being a formula in a cell, it was a function defined in a VB macro? As luck would have it, we already have an example of this in the examples from the @@ -540,8 +532,7 @@ Total time: 390 milliseconds cell B4, you see that rather than a messy cell based formula, there is only the function call. Let's not get bogged down in the function/Java implementation, as these are covered in the User Defined Function documentation. Let's just add - a new target and test to our existing build file:</p> - + a new target and test to our existing build file:</p> <pre class="code"> <target name="functionTest"> <excelant fileName="${xls.file}"> @@ -555,58 +546,42 @@ Total time: 390 milliseconds </test> </excelant> </target> -</pre> - - +</pre> <p>So if you look at this carefully it looks the same as the previous examples. We still use the global precision, we're still setting values, and we still want to evaluate a cell. The only real differences are the sheet name and the - addition of the function.</p> - - - - -<div id="authors" align="right">by Jon Svede, Brian Bush</div> + addition of the function.</p> </div> + +<p align="right"> +<font size="-2">by Jon Svede, Brian Bush</font> +</p> </div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> </div> -</td> -<!--================= end Content ==================--> -</tr> -</tbody> -</table> -<!--================= end Main ==================--> -<!--================= start Footer ==================--> <div id="footer"> -<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> -<tbody> -<tr> -<!--================= start Copyright ==================--> -<td colspan="2"> -<div align="center"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> <div class="copyright"> - Copyright © 2002-2018 The Apache Software Foundation. All rights reserved.<br> - Apache, Apache POI, and the Apache POI logo are registered trademarks or - trademarks of The Apache Software Foundation in the U.S. and/or other countries. - </div> -</div> -</td> -<!--================= end Copyright ==================--> -</tr> -<tr> -<td align="left"> -<!--================= start Host ==================--> -<!--================= end Host ==================--></td><td align="right"> -<!--================= start Credits ==================--> -<div align="right"> -<div class="credit"></div> -</div> -<!--================= end Credits ==================--> -</td> -</tr> -</tbody> -</table> + Copyright © + 2001-2018 <a href="https://www.apache.org/">The Apache Software Foundation</a> +</div> +<div id="feedback"> + Send feedback about the website to: + <a id="feedbackto" href="mailto:[email protected]?subject=Feedback%C2%A0components/spreadsheet/excelant.html">[email protected]</a> +</div> +<!--+ + |end bottomstrip + +--> </div> -<!--================= end Footer ==================--> </body> </html>
Modified: poi/site/publish/components/spreadsheet/formula.html URL: http://svn.apache.org/viewvc/poi/site/publish/components/spreadsheet/formula.html?rev=1836244&r1=1836243&r2=1836244&view=diff ============================================================================== --- poi/site/publish/components/spreadsheet/formula.html (original) +++ poi/site/publish/components/spreadsheet/formula.html Wed Jul 18 23:27:21 2018 @@ -1,225 +1,314 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<!--*** This is a generated file. Do not edit. ***--> -<link rel="stylesheet" href="../skin/tigris.css" type="text/css"> -<link rel="stylesheet" href="../skin/mysite.css" type="text/css"> -<link rel="stylesheet" href="../skin/site.css" type="text/css"> -<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> <title>Formula Support</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../images/favicon.ico"> </head> -<body bgcolor="white" class="composite"> -<!--================= start Banner ==================--> -<div id="banner"> -<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> -<tbody> -<tr> -<!--================= start Group Logo ==================--> -<td width="50%" align="left"> -<div class="groupLogo"> -<a href="https://www.apache.org"><img border="0" class="logoImage" alt="The Apache Software Foundation" src="../resources/images/asf_logo.png"></a> -</div> -</td> -<!--================= end Group Logo ==================--> -<!--================= start Project Logo ==================--><td width="50%" align="right"> -<div align="right" class="projectLogo"> -<a href="https://donate.apache.org/"><img border="0" class="logoImage" alt="Support Apache" src="../resources/images/support-asf.png" width="120" height="120" title="Your donation helps The Apache Software Foundation ensure its community-driven software remains available to billions of users at absolutely no cost."></a><a href="https://poi.apache.org/"><img border="0" class="logoImage" alt="Apache POI" src="../resources/images/pb-poi.png" width="120" height="120" title="Apache POI - the Java API for Microsoft Documents"></a> -</div> -</td> -<!--================= end Project Logo ==================--> -</tr> -</tbody> -</table> -</div> -<!--================= end Banner ==================--> -<!--================= start Main ==================--> -<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> -<tbody> -<!--================= start Status ==================--> -<tr class="status"> -<td> -<!--================= start BreadCrumb ==================--><a href="https://www.apache.org/">Apache</a> | <a href="https://poi.apache.org/">POI</a><a href=""></a> -<!--================= end BreadCrumb ==================--></td><td id="tabs"> -<!--================= start Tabs ==================--> -<div class="tab"> -<span class="selectedTab"><a class="base-selected" href="../index.html">Home</a></span> | <script language="Javascript" type="text/javascript"> -function printit() { -if (window.print) { - window.print() ; -} else { - var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH="0" HEIGHT="0" CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; -document.body.insertAdjacentHTML('beforeEnd', WebBrowser); - WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box WebBrowser1.outerHTML = ""; -} -} -</script><script language="Javascript" type="text/javascript"> -var NS = (navigator.appName == "Netscape"); -var VERSION = parseInt(navigator.appVersion); -if (VERSION > 3) { - document.write(' <a title="PRINT this page OUT" href="javascript:printit()">PRINT</a>'); -} -</script> -</div> -<!--================= end Tabs ==================--> -</td> -</tr> -</tbody> -</table> -<!--================= end Status ==================--> -<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> -<tbody> -<tr valign="top"> -<!--================= start Menu ==================--> -<td id="leftcol"> -<div id="navcolumn"> -<div class="menuBar"> -<div class="menu"> -<span class="menuLabel">Apache POI</span> - -<div class="menuItem"> -<a href="../index.html">Top</a> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="https://www.apache.org">Apache Software Foundation</a> > <a href="https://poi.apache.org">Apache POI</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="https://www.apache.org"><img class="logoImage" alt="Apache Software Foundation" src="../../images/group-logo.png" title="The Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy."></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="https://poi.apache.org"><img class="logoImage" alt="Apache POI" src="../../images/project-logo.png" title="Apache POI is well-known in the Java field as a library for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Word, Visio, Publisher and Outlook. It supports both the older (OLE2) and new (OOXML - Office Open XML) formats."></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="poi.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google"> + <input name="Search" value="Search" type="submit"> +</form> </div> - +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="../../index.html">Home</a> +</li> +<li> +<a class="unselected" href="../../help/index.html">Help</a> +</li> +<li class="current"> +<a class="selected" href="../../components/index.html">Component APIs</a> +</li> +<li> +<a class="unselected" href="../../devel/index.html">Getting Involved</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> + + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Component APIs</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/index.html">Overview</a> </div> -<div class="menu"> -<span class="menuLabel">HSSF+XSSF</span> - -<div class="menuItem"> -<a href="index.html">Overview</a> +<div class="menuitem"> +<a href="../../apidocs/index.html">Javadocs</a> </div> - -<div class="menuItem"> -<a href="quick-guide.html">Quick Guide</a> +<div onclick="SwitchMenu('menu_selected_1.1.3', '../../skin/')" id="menu_selected_1.1.3Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Excel (HSSF/XSSF)</div> +<div id="menu_selected_1.1.3" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/spreadsheet/index.html">Overview</a> </div> - -<div class="menuItem"> -<a href="how-to.html">HOWTO</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a> </div> - -<div class="menuItem"> -<a href="converting.html">HSSF to SS Converting</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/how-to.html">HOWTO</a> </div> - -<div class="menuItem"> -<span class="menuSelected">Formula Support</span> +<div class="menuitem"> +<a href="../../components/spreadsheet/converting.html">HSSF to SS Converting</a> </div> - -<div class="menuItem"> -<a href="eval.html">Formula Evaluation</a> +<div class="menupage"> +<div class="menupagetitle">Formula Support</div> </div> - -<div class="menuItem"> -<a href="eval-devguide.html">Eval Dev Guide</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a> </div> - -<div class="menuItem"> -<a href="examples.html">Examples</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a> </div> - -<div class="menuItem"> -<a href="use-case.html">Use Case</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/examples.html">Examples</a> </div> - -<div class="menuItem"> -<a href="diagrams.html">Pictorial Docs</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/use-case.html">Use Case</a> </div> - -<div class="menuItem"> -<a href="limitations.html">Limitations</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a> </div> - -<div class="menuItem"> -<a href="user-defined-functions.html">User Defined Functions</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/limitations.html">Limitations</a> </div> - -<div class="menuItem"> -<a href="excelant.html">ExcelAnt Tests</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/user-defined-functions.html">User Defined Functions</a> </div> - +<div class="menuitem"> +<a href="../../components/spreadsheet/excelant.html">ExcelAnt Tests</a> </div> -<div class="menu"> -<span class="menuLabel">Contributer's Guide</span> - -<div class="menuItem"> -<a href="hacking-hssf.html">Hacking HSSF</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a> </div> - -<div class="menuItem"> -<a href="record-generator.html">Record Generator</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/record-generator.html">Record Generator</a> </div> - -<div class="menuItem"> -<a href="chart.html">Charts</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/chart.html">Charts</a> </div> - </div> -<center> -<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png"></a> -</center> -</div> -</div> -<form target="_blank" action="https://www.google.com/search" method="get"> -<table summary="search" border="0" cellspacing="0" cellpadding="0"> -<tr> -<td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"> - Search Apache POI<br> -<input value="poi.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="GO" type="submit"></td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> -</tr> -</table> -</form> -</td> -<!--================= end Menu ==================--> -<!--================= start Content ==================--><td> -<div id="bodycol"> -<div class="app"> -<div align="center"> -<h1>Formula Support</h1> +<div onclick="SwitchMenu('menu_1.1.4', '../../skin/')" id="menu_1.1.4Title" class="menutitle">PowerPoint (HSLF/XSLF)</div> +<div id="menu_1.1.4" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/slideshow/index.html">Overview</a> </div> -<div class="h3"> - - +<div class="menuitem"> +<a href="../../components/slideshow/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/how-to-shapes.html">HSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/xslf-cookbook.html">XSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/ppt-file-format.html">PPT File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Word (HWPF/XWPF)</div> +<div id="menu_1.1.5" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/document/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide.html">HWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide-xwpf.html">XWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/docoverview.html">HWPF Format</a> +</div> +<div class="menuitem"> +<a href="../../components/document/projectplan.html">HWPF Project plan</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hsmf/index.html">Outlook (HSMF)</a> +</div> +<div class="menuitem"> +<a href="../../components/diagram/index.html">Visio (HDGF+XDGF)</a> +</div> +<div onclick="SwitchMenu('menu_1.1.8', '../../skin/')" id="menu_1.1.8Title" class="menutitle">Publisher (HPBF)</div> +<div id="menu_1.1.8" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpbf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpbf/file-format.html">File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.9', '../../skin/')" id="menu_1.1.9Title" class="menutitle">OLE2 Filesystem (POIFS)</div> +<div id="menu_1.1.9" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/poifs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/embeded.html">Embedded Documents</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/fileformat.html">File System Documentation</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/usecases.html">Use Cases</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/design.html">Design</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.10', '../../skin/')" id="menu_1.1.10Title" class="menutitle">OLE2 Document Props (HPSF)</div> +<div id="menu_1.1.10" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpsf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/thumbnails.html">Thumbnails</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/internals.html">Internals</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/todo.html">To Do</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hmef/index.html">TNEF (HMEF) for winmail.dat</a> +</div> +<div class="menuitem"> +<a href="../../components/oxml4j/index.html">OpenXML4J (OOXML)</a> +</div> +<div class="menuitem"> +<a href="../../components/logging.html">Logging framework</a> +</div> +</div> +<div id="credit"></div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"> +<a href="https://donate.apache.org/"><img border="0" title="Support Apache" alt="Support Apache - logo" src="../../images/support-asf.png" style="width: 125px;height: 125px;"></a> +</div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<h1>Formula Support</h1> +<div id="front-matter"></div> <a name="Introduction"></a> -<div class="h3"> -<h3>Introduction<a title="Permanent link" class="headerlink" href="#Introduction">#</a> -</h3> -</div> - +<h2 class="boxed">Introduction</h2> +<div class="section"> <p> This document describes the current state of formula support in POI. The information in this document currently applies to the 3.13 version of POI. Since this area is a work in progress, this document will be updated with new features as and when they are added. </p> - - +</div> <a name="The+basics"></a> -<div class="h3"> -<h3>The basics<a title="Permanent link" class="headerlink" href="#The+basics">#</a> -</h3> -</div> - +<h2 class="boxed">The basics</h2> +<div class="section"> <p> In org.apache.poi.ss.usermodel.Cell <strong> setCellFormula("formulaString") </strong> is used to add a formula to a sheet, and <strong> getCellFormula() </strong> is used to retrieve the string representation of a formula. </p> - <p> We aim to support the complete excel grammar for formulas. Thus, the string that you pass in to the <em> setCellFormula </em> 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> - <p> Please note that localized versions of Excel allow to enter localized function-names. However internally Excel stores the English names and thus POI @@ -227,14 +316,11 @@ if (VERSION > 3) { used to separate arguments, as per the Excel English style, alternate delimeters used in other localizations are not supported. </p> - - -<a name="Supported+Features"></a> -<div class="h3"> -<h3>Supported Features<a title="Permanent link" class="headerlink" href="#Supported+Features">#</a> -</h3> </div> +<a name="Supported+Features"></a> +<h2 class="boxed">Supported Features</h2> +<div class="section"> <ul> <li>References: single cell & area, 2D & 3D, relative & absolute</li> @@ -252,14 +338,11 @@ if (VERSION > 3) { <li>Region operators: union, intersection</li> </ul> - +</div> <a name="Not+yet+supported"></a> -<div class="h3"> -<h3>Not yet supported<a title="Permanent link" class="headerlink" href="#Not+yet+supported">#</a> -</h3> -</div> - +<h2 class="boxed">Not yet supported</h2> +<div class="section"> <ul> <li>Manipulating table formulas (In Excel, formulas that look like "{=...}" as opposed to "=...")</li> @@ -269,54 +352,43 @@ if (VERSION > 3) { <li>Preservation of whitespace in formulas (when POI manipulates them)</li> </ul> - +</div> <a name="Supported+Functions"></a> -<div class="h3"> -<h3>Supported Functions<a title="Permanent link" class="headerlink" href="#Supported+Functions">#</a> -</h3> -</div> - +<h2 class="boxed">Supported Functions</h2> +<div class="section"> <p>To get the list of formula functions that POI supports, you need to call some code!</p> - <p>The methods you need are available on - <a href="../apidocs/org/apache/poi/ss/formula/eval/FunctionEval.html">org.apache.poi.ss.formula.eval.FunctionEval</a>. + <a href="../../apidocs/org/apache/poi/ss/formula/eval/FunctionEval.html">org.apache.poi.ss.formula.eval.FunctionEval</a>. To find which functions your copy of Apache POI supports, use - <a href="../apidocs/org/apache/poi/ss/formula/eval/FunctionEval.html#getSupportedFunctionNames()">getSupportedFunctionNames()</a> + <a href="../../apidocs/org/apache/poi/ss/formula/eval/FunctionEval.html#getSupportedFunctionNames()">getSupportedFunctionNames()</a> to get a list of the implemented function names. For the list of functions that POI knows the name of, but doesn't currently implement, use - <a href="../apidocs/org/apache/poi/ss/formula/eval/FunctionEval.html#getNotSupportedFunctionNames()">getNotSupportedFunctionNames()</a> + <a href="../../apidocs/org/apache/poi/ss/formula/eval/FunctionEval.html#getNotSupportedFunctionNames()">getNotSupportedFunctionNames()</a> </p> - +</div> <a name="Internals"></a> -<div class="h3"> -<h3>Internals<a title="Permanent link" class="headerlink" href="#Internals">#</a> -</h3> -</div> - +<h2 class="boxed">Internals</h2> +<div class="section"> <p> Formulas in Excel are stored as sequences of tokens in Reverse Polish Notation order. The <a href="http://sc.openoffice.org/excelfileformat.pdf">open office XLS spec</a> is the best documentation you will find for the format. </p> - - <p> The tokens used by excel are modeled 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.ss.formula.FormulaParser</strong> class. This class implements a hand written recursive descent parser. </p> - <p> Formula tokens in Excel are stored in one of three possible <em> operand classes </em>: Reference, Value and Array. Based on the location of a token, its class can change @@ -326,53 +398,39 @@ if (VERSION > 3) { occurrence 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.) </p> - -<p>Check out the <a href="http://poi.apache.org/apidocs/">javadocs </a> for details. +<p>Check out the <a href="../../apidocs/">javadocs </a> for details. </p> - - - -<div id="authors" align="right">by Avik Sengupta</div> </div> + +<p align="right"> +<font size="-2">by Avik Sengupta</font> +</p> </div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> </div> -</td> -<!--================= end Content ==================--> -</tr> -</tbody> -</table> -<!--================= end Main ==================--> -<!--================= start Footer ==================--> <div id="footer"> -<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> -<tbody> -<tr> -<!--================= start Copyright ==================--> -<td colspan="2"> -<div align="center"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> <div class="copyright"> - Copyright © 2002-2018 The Apache Software Foundation. All rights reserved.<br> - Apache, Apache POI, and the Apache POI logo are registered trademarks or - trademarks of The Apache Software Foundation in the U.S. and/or other countries. - </div> -</div> -</td> -<!--================= end Copyright ==================--> -</tr> -<tr> -<td align="left"> -<!--================= start Host ==================--> -<!--================= end Host ==================--></td><td align="right"> -<!--================= start Credits ==================--> -<div align="right"> -<div class="credit"></div> -</div> -<!--================= end Credits ==================--> -</td> -</tr> -</tbody> -</table> + Copyright © + 2001-2018 <a href="https://www.apache.org/">The Apache Software Foundation</a> +</div> +<div id="feedback"> + Send feedback about the website to: + <a id="feedbackto" href="mailto:[email protected]?subject=Feedback%C2%A0components/spreadsheet/formula.html">[email protected]</a> +</div> +<!--+ + |end bottomstrip + +--> </div> -<!--================= end Footer ==================--> </body> </html> Modified: poi/site/publish/components/spreadsheet/hacking-hssf.html URL: http://svn.apache.org/viewvc/poi/site/publish/components/spreadsheet/hacking-hssf.html?rev=1836244&r1=1836243&r2=1836244&view=diff ============================================================================== --- poi/site/publish/components/spreadsheet/hacking-hssf.html (original) +++ poi/site/publish/components/spreadsheet/hacking-hssf.html Wed Jul 18 23:27:21 2018 @@ -1,217 +1,308 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<!--*** This is a generated file. Do not edit. ***--> -<link rel="stylesheet" href="../skin/tigris.css" type="text/css"> -<link rel="stylesheet" href="../skin/mysite.css" type="text/css"> -<link rel="stylesheet" href="../skin/site.css" type="text/css"> -<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> <title>Hacking HSSF</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../images/favicon.ico"> </head> -<body bgcolor="white" class="composite"> -<!--================= start Banner ==================--> -<div id="banner"> -<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> -<tbody> -<tr> -<!--================= start Group Logo ==================--> -<td width="50%" align="left"> -<div class="groupLogo"> -<a href="https://www.apache.org"><img border="0" class="logoImage" alt="The Apache Software Foundation" src="../resources/images/asf_logo.png"></a> -</div> -</td> -<!--================= end Group Logo ==================--> -<!--================= start Project Logo ==================--><td width="50%" align="right"> -<div align="right" class="projectLogo"> -<a href="https://donate.apache.org/"><img border="0" class="logoImage" alt="Support Apache" src="../resources/images/support-asf.png" width="120" height="120" title="Your donation helps The Apache Software Foundation ensure its community-driven software remains available to billions of users at absolutely no cost."></a><a href="https://poi.apache.org/"><img border="0" class="logoImage" alt="Apache POI" src="../resources/images/pb-poi.png" width="120" height="120" title="Apache POI - the Java API for Microsoft Documents"></a> -</div> -</td> -<!--================= end Project Logo ==================--> -</tr> -</tbody> -</table> -</div> -<!--================= end Banner ==================--> -<!--================= start Main ==================--> -<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> -<tbody> -<!--================= start Status ==================--> -<tr class="status"> -<td> -<!--================= start BreadCrumb ==================--><a href="https://www.apache.org/">Apache</a> | <a href="https://poi.apache.org/">POI</a><a href=""></a> -<!--================= end BreadCrumb ==================--></td><td id="tabs"> -<!--================= start Tabs ==================--> -<div class="tab"> -<span class="selectedTab"><a class="base-selected" href="../index.html">Home</a></span> | <script language="Javascript" type="text/javascript"> -function printit() { -if (window.print) { - window.print() ; -} else { - var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH="0" HEIGHT="0" CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; -document.body.insertAdjacentHTML('beforeEnd', WebBrowser); - WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box WebBrowser1.outerHTML = ""; -} -} -</script><script language="Javascript" type="text/javascript"> -var NS = (navigator.appName == "Netscape"); -var VERSION = parseInt(navigator.appVersion); -if (VERSION > 3) { - document.write(' <a title="PRINT this page OUT" href="javascript:printit()">PRINT</a>'); -} -</script> -</div> -<!--================= end Tabs ==================--> -</td> -</tr> -</tbody> -</table> -<!--================= end Status ==================--> -<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> -<tbody> -<tr valign="top"> -<!--================= start Menu ==================--> -<td id="leftcol"> -<div id="navcolumn"> -<div class="menuBar"> -<div class="menu"> -<span class="menuLabel">Apache POI</span> - -<div class="menuItem"> -<a href="../index.html">Top</a> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="https://www.apache.org">Apache Software Foundation</a> > <a href="https://poi.apache.org">Apache POI</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="https://www.apache.org"><img class="logoImage" alt="Apache Software Foundation" src="../../images/group-logo.png" title="The Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy."></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="https://poi.apache.org"><img class="logoImage" alt="Apache POI" src="../../images/project-logo.png" title="Apache POI is well-known in the Java field as a library for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Word, Visio, Publisher and Outlook. It supports both the older (OLE2) and new (OOXML - Office Open XML) formats."></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="poi.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google"> + <input name="Search" value="Search" type="submit"> +</form> </div> - +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="../../index.html">Home</a> +</li> +<li> +<a class="unselected" href="../../help/index.html">Help</a> +</li> +<li class="current"> +<a class="selected" href="../../components/index.html">Component APIs</a> +</li> +<li> +<a class="unselected" href="../../devel/index.html">Getting Involved</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> + + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Component APIs</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/index.html">Overview</a> </div> -<div class="menu"> -<span class="menuLabel">HSSF+XSSF</span> - -<div class="menuItem"> -<a href="index.html">Overview</a> +<div class="menuitem"> +<a href="../../apidocs/index.html">Javadocs</a> </div> - -<div class="menuItem"> -<a href="quick-guide.html">Quick Guide</a> +<div onclick="SwitchMenu('menu_selected_1.1.3', '../../skin/')" id="menu_selected_1.1.3Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Excel (HSSF/XSSF)</div> +<div id="menu_selected_1.1.3" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/spreadsheet/index.html">Overview</a> </div> - -<div class="menuItem"> -<a href="how-to.html">HOWTO</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a> </div> - -<div class="menuItem"> -<a href="converting.html">HSSF to SS Converting</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/how-to.html">HOWTO</a> </div> - -<div class="menuItem"> -<a href="formula.html">Formula Support</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/converting.html">HSSF to SS Converting</a> </div> - -<div class="menuItem"> -<a href="eval.html">Formula Evaluation</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/formula.html">Formula Support</a> </div> - -<div class="menuItem"> -<a href="eval-devguide.html">Eval Dev Guide</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a> </div> - -<div class="menuItem"> -<a href="examples.html">Examples</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a> </div> - -<div class="menuItem"> -<a href="use-case.html">Use Case</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/examples.html">Examples</a> </div> - -<div class="menuItem"> -<a href="diagrams.html">Pictorial Docs</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/use-case.html">Use Case</a> </div> - -<div class="menuItem"> -<a href="limitations.html">Limitations</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a> </div> - -<div class="menuItem"> -<a href="user-defined-functions.html">User Defined Functions</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/limitations.html">Limitations</a> </div> - -<div class="menuItem"> -<a href="excelant.html">ExcelAnt Tests</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/user-defined-functions.html">User Defined Functions</a> </div> - +<div class="menuitem"> +<a href="../../components/spreadsheet/excelant.html">ExcelAnt Tests</a> </div> -<div class="menu"> -<span class="menuLabel">Contributer's Guide</span> - -<div class="menuItem"> -<span class="menuSelected">Hacking HSSF</span> +<div class="menupage"> +<div class="menupagetitle">Hacking HSSF</div> </div> - -<div class="menuItem"> -<a href="record-generator.html">Record Generator</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/record-generator.html">Record Generator</a> </div> - -<div class="menuItem"> -<a href="chart.html">Charts</a> +<div class="menuitem"> +<a href="../../components/spreadsheet/chart.html">Charts</a> </div> - </div> -<center> -<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png"></a> -</center> -</div> -</div> -<form target="_blank" action="https://www.google.com/search" method="get"> -<table summary="search" border="0" cellspacing="0" cellpadding="0"> -<tr> -<td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"> - Search Apache POI<br> -<input value="poi.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="GO" type="submit"></td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> -</tr> -<tr> -<td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> -</tr> -</table> -</form> -</td> -<!--================= end Menu ==================--> -<!--================= start Content ==================--><td> -<div id="bodycol"> -<div class="app"> -<div align="center"> -<h1>Hacking HSSF</h1> +<div onclick="SwitchMenu('menu_1.1.4', '../../skin/')" id="menu_1.1.4Title" class="menutitle">PowerPoint (HSLF/XSLF)</div> +<div id="menu_1.1.4" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/slideshow/index.html">Overview</a> </div> -<div class="h3"> - - +<div class="menuitem"> +<a href="../../components/slideshow/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/how-to-shapes.html">HSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/xslf-cookbook.html">XSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/ppt-file-format.html">PPT File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Word (HWPF/XWPF)</div> +<div id="menu_1.1.5" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/document/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide.html">HWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide-xwpf.html">XWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/docoverview.html">HWPF Format</a> +</div> +<div class="menuitem"> +<a href="../../components/document/projectplan.html">HWPF Project plan</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hsmf/index.html">Outlook (HSMF)</a> +</div> +<div class="menuitem"> +<a href="../../components/diagram/index.html">Visio (HDGF+XDGF)</a> +</div> +<div onclick="SwitchMenu('menu_1.1.8', '../../skin/')" id="menu_1.1.8Title" class="menutitle">Publisher (HPBF)</div> +<div id="menu_1.1.8" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpbf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpbf/file-format.html">File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.9', '../../skin/')" id="menu_1.1.9Title" class="menutitle">OLE2 Filesystem (POIFS)</div> +<div id="menu_1.1.9" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/poifs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/embeded.html">Embedded Documents</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/fileformat.html">File System Documentation</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/usecases.html">Use Cases</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/design.html">Design</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.10', '../../skin/')" id="menu_1.1.10Title" class="menutitle">OLE2 Document Props (HPSF)</div> +<div id="menu_1.1.10" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpsf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/thumbnails.html">Thumbnails</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/internals.html">Internals</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/todo.html">To Do</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hmef/index.html">TNEF (HMEF) for winmail.dat</a> +</div> +<div class="menuitem"> +<a href="../../components/oxml4j/index.html">OpenXML4J (OOXML)</a> +</div> +<div class="menuitem"> +<a href="../../components/logging.html">Logging framework</a> +</div> +</div> +<div id="credit"></div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"> +<a href="https://donate.apache.org/"><img border="0" title="Support Apache" alt="Support Apache - logo" src="../../images/support-asf.png" style="width: 125px;height: 125px;"></a> +</div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<h1>Hacking HSSF</h1> +<div id="front-matter"></div> <a name="Where+Can+I+Find+Documentation+on+Feature+X"></a> -<div class="h3"> -<h3>Where Can I Find Documentation on Feature X<a title="Permanent link" class="headerlink" href="#Where+Can+I+Find+Documentation+on+Feature+X">#</a> -</h3> -</div> - +<h2 class="boxed">Where Can I Find Documentation on Feature X</h2> +<div class="section"> <p> You might find the 'Excel 97 Developer's Kit' (out of print, Microsoft Press, no restrictive covenants, available on Amazon.com) helpful for understanding the file format. </p> - <p> Also useful is the <a href="http://sc.openoffice.org/excelfileformat.pdf">open office XLS spec</a>. We are collaborating with the maintainer of the spec so if you think you can add something to their document just send through your changes. </p> - +</div> <a name="Help%2C+I+Can%27t+Find+Feature+X+Documented+Anywhere"></a> -<div class="h3"> -<h3>Help, I Can't Find Feature X Documented Anywhere<a title="Permanent link" class="headerlink" href="#Help%2C+I+Can%27t+Find+Feature+X+Documented+Anywhere">#</a> -</h3> -</div> - +<h2 class="boxed">Help, I Can't Find Feature X Documented Anywhere</h2> +<div class="section"> <ol> <li> @@ -228,19 +319,15 @@ if (VERSION > 3) { </li> </ol> - +</div> <a name="Low-level+Record+Generation"></a> -<div class="h3"> -<h3>Low-level Record Generation<a title="Permanent link" class="headerlink" href="#Low-level+Record+Generation">#</a> -</h3> -</div> - +<h2 class="boxed">Low-level Record Generation</h2> +<div class="section"> <p> Low level records can be time consuming to created. We created a record generator to help generate some of the simpler tasks. </p> - <p> We use XML descriptors to generate the Java code (which sure beats the heck out of @@ -249,84 +336,61 @@ if (VERSION > 3) { so you may find that to be about 1/2 of the work. Notice this is in org.apache.poi.hssf.record.definitions. </p> - +</div> <a name="Important+Notice"></a> -<div class="h3"> -<h3>Important Notice<a title="Permanent link" class="headerlink" href="#Important+Notice">#</a> -</h3> -</div> - +<h2 class="boxed">Important Notice</h2> +<div class="section"> <p>One thing to note: If you are making a large code contribution we need to ensure any participants in this process have never signed a "Non Disclosure Agreement" with Microsoft, and have not received any information covered by such an agreement. If they have they'll not be able to participate in the POI project. For large contributions we may ask you to sign an agreement.</p> - +</div> <a name="What+Can+I+Work+On%3F"></a> -<div class="h3"> -<h3>What Can I Work On?<a title="Permanent link" class="headerlink" href="#What+Can+I+Work+On%3F">#</a> -</h3> +<h2 class="boxed">What Can I Work On?</h2> +<div class="section"> +<p>Ask in the dev mailing list for advice.</p> </div> - -<p>Check our <a href="../todo.html">todo list</a> or simply look for missing functionality. Start small - and work your way up.</p> - <a name="What+Else+Should+I+Know%3F"></a> -<div class="h3"> -<h3>What Else Should I Know?<a title="Permanent link" class="headerlink" href="#What+Else+Should+I+Know%3F">#</a> -</h3> -</div> - -<p>Make sure you <a href="../guidelines.html">read the contributing section</a> +<h2 class="boxed">What Else Should I Know?</h2> +<div class="section"> +<p>Make sure you <a href="../../devel/guidelines.html">read the contributing section</a> as it contains more generation information about contributing to POI in general.</p> - - - -<div id="authors" align="right">by Glen Stampoultzis, Andrew Oliver</div> -</div> </div> + +<p align="right"> +<font size="-2">by Glen Stampoultzis, Andrew Oliver</font> +</p> +</div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> </div> -</td> -<!--================= end Content ==================--> -</tr> -</tbody> -</table> -<!--================= end Main ==================--> -<!--================= start Footer ==================--> <div id="footer"> -<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> -<tbody> -<tr> -<!--================= start Copyright ==================--> -<td colspan="2"> -<div align="center"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> <div class="copyright"> - Copyright © 2002-2018 The Apache Software Foundation. All rights reserved.<br> - Apache, Apache POI, and the Apache POI logo are registered trademarks or - trademarks of The Apache Software Foundation in the U.S. and/or other countries. - </div> -</div> -</td> -<!--================= end Copyright ==================--> -</tr> -<tr> -<td align="left"> -<!--================= start Host ==================--> -<!--================= end Host ==================--></td><td align="right"> -<!--================= start Credits ==================--> -<div align="right"> -<div class="credit"></div> -</div> -<!--================= end Credits ==================--> -</td> -</tr> -</tbody> -</table> + Copyright © + 2001-2018 <a href="https://www.apache.org/">The Apache Software Foundation</a> +</div> +<div id="feedback"> + Send feedback about the website to: + <a id="feedbackto" href="mailto:[email protected]?subject=Feedback%C2%A0components/spreadsheet/hacking-hssf.html">[email protected]</a> +</div> +<!--+ + |end bottomstrip + +--> </div> -<!--================= end Footer ==================--> </body> </html> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
