Modified: poi/site/publish/components/spreadsheet/record-generator.html
URL: 
http://svn.apache.org/viewvc/poi/site/publish/components/spreadsheet/record-generator.html?rev=1836244&r1=1836243&r2=1836244&view=diff
==============================================================================
--- poi/site/publish/components/spreadsheet/record-generator.html (original)
+++ poi/site/publish/components/spreadsheet/record-generator.html Wed Jul 18 
23:27:21 2018
@@ -1,228 +1,309 @@
-<!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>Record Generator HOWTO</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>
+<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> &gt; <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 
&ndash; 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">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
 </div>
-</td>
-<!--================= end Project Logo ==================-->
-</tr>
-</tbody>
-</table>
+<!--+
+    |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">
+
+             &nbsp;
+           </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>
-<!--================= 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 class="menuitem">
+<a href="../../apidocs/index.html">Javadocs</a>
 </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>
+<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="../../components/spreadsheet/quick-guide.html">Quick Guide</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="../../components/spreadsheet/how-to.html">HOWTO</a>
 </div>
-        
-<div class="menuItem">
-<a href="quick-guide.html">Quick Guide</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/converting.html">HSSF to SS 
Converting</a>
 </div>
-        
-<div class="menuItem">
-<a href="how-to.html">HOWTO</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/formula.html">Formula Support</a>
 </div>
-        
-<div class="menuItem">
-<a href="converting.html">HSSF to SS Converting</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a>
 </div>
-        
-<div class="menuItem">
-<a href="formula.html">Formula Support</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a>
 </div>
-        
-<div class="menuItem">
-<a href="eval.html">Formula Evaluation</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/examples.html">Examples</a>
 </div>
-                   
-<div class="menuItem">
-<a href="eval-devguide.html">Eval Dev Guide</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/use-case.html">Use Case</a>
 </div>
-        
-<div class="menuItem">
-<a href="examples.html">Examples</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a>
 </div>
-        
-<div class="menuItem">
-<a href="use-case.html">Use Case</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/limitations.html">Limitations</a>
 </div>
-        
-<div class="menuItem">
-<a href="diagrams.html">Pictorial Docs</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/user-defined-functions.html">User 
Defined Functions</a>
 </div>
-        
-<div class="menuItem">
-<a href="limitations.html">Limitations</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/excelant.html">ExcelAnt Tests</a>
 </div>
-        
-<div class="menuItem">
-<a href="user-defined-functions.html">User Defined Functions</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a>
 </div>
-        
-<div class="menuItem">
-<a href="excelant.html">ExcelAnt Tests</a>
+<div class="menupage">
+<div class="menupagetitle">Record Generator</div>
 </div>
-    
+<div class="menuitem">
+<a href="../../components/spreadsheet/chart.html">Charts</a>
 </div>
-<div class="menu">
-<span class="menuLabel">Contributer's Guide</span>
-        
-<div class="menuItem">
-<a href="hacking-hssf.html">Hacking HSSF</a>
 </div>
-        
-<div class="menuItem">
-<span class="menuSelected">Record Generator</span>
+<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="chart.html">Charts</a>
+<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>
-<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 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>
-<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>Record Generator HOWTO</h1>
 </div>
-<div class="h3">
-  
-  
-    
-<a name="How+to+Use+the+Record+Generator"></a>
-<div class="h3">
-<h3>How to Use the Record Generator<a title="Permanent link" 
class="headerlink" href="#How+to+Use+the+Record+Generator">#</a>
-</h3>
+<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>Record Generator HOWTO</h1>
+<div id="front-matter"></div>
     
+<a name="How+to+Use+the+Record+Generator"></a>
+<h2 class="boxed">How to Use the Record Generator</h2>
+<div class="section">
 <a name="History"></a>
-<div class="h4">
-<h4>History<a title="Permanent link" class="headerlink" href="#History">#</a>
-</h4>
-</div>
-        
+<h3 class="boxed">History</h3>
 <p>
         The record generator was born from frustration with translating
         the Excel records to Java classes.  Doing this manually is a time
         consuming process.  It's also very easy to make mistakes.
         </p>
-        
 <p>
         A utility was needed to take the definition of what a
         record looked like and do all the boring and repetitive work.
         </p>
-    
-
-    
 <a name="Capabilities"></a>
-<div class="h4">
-<h4>Capabilities<a title="Permanent link" class="headerlink" 
href="#Capabilities">#</a>
-</h4>
-</div>
-    
+<h3 class="boxed">Capabilities</h3>
 <p>
         The record generator takes XML as input and produces the following
         output:
     </p>
-    
 <ul>
         
 <li>A Java file capable of decoding and encoding the record.</li>
@@ -232,14 +313,8 @@ if (VERSION > 3) {
             designed.</li>
     
 </ul>
-    
-    
 <a name="Usage"></a>
-<div class="h4">
-<h4>Usage<a title="Permanent link" class="headerlink" href="#Usage">#</a>
-</h4>
-</div>
-        
+<h3 class="boxed">Usage</h3>
 <p>
             The record generator is invoked as an Ant target
             (generate-records).  It goes through looking for all files in
@@ -247,11 +322,9 @@ if (VERSION > 3) {
             It then creates two files; the Java record definition and the
             Java test case template.
         </p>
-        
 <p>
             The records themselves have the following general layout:
         </p>
-        
 <pre class="code">
 &lt;record id="0x1032" name="Frame" package="org.apache.poi.hssf.record"
         excel-record-id="FRAME"&gt;
@@ -272,15 +345,13 @@ if (VERSION > 3) {
     &lt;/fields&gt;
 &lt;/record&gt;
         </pre>
-        
 <p>
             The following table details the allowable types and sizes for
             the fields.
         </p>
-        
 <table class="ForrestTable" cellspacing="1" cellpadding="4">
             
-<tr class="b">
+<tr>
                 
 <th colspan="1" rowspan="1">Type</th>
                 <th colspan="1" rowspan="1">Size</th>
@@ -288,7 +359,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="a">
+<tr>
                 
 <td colspan="1" rowspan="1">int</td>
                 <td colspan="1" rowspan="1">1</td>
@@ -296,7 +367,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="b">
+<tr>
                 
 <td colspan="1" rowspan="1">int</td>
                 <td colspan="1" rowspan="1">2</td>
@@ -304,7 +375,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="a">
+<tr>
                 
 <td colspan="1" rowspan="1">int</td>
                 <td colspan="1" rowspan="1">4</td>
@@ -312,7 +383,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="b">
+<tr>
                 
 <td colspan="1" rowspan="1">int</td>
                 <td colspan="1" rowspan="1">8</td>
@@ -320,7 +391,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="a">
+<tr>
                 
 <td colspan="1" rowspan="1">int</td>
                 <td colspan="1" rowspan="1">varword</td>
@@ -328,7 +399,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="b">
+<tr>
                 
 <td colspan="1" rowspan="1">bits</td>
                 <td colspan="1" rowspan="1">1</td>
@@ -337,7 +408,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="a">
+<tr>
                 
 <td colspan="1" rowspan="1">bits</td>
                 <td colspan="1" rowspan="1">2</td>
@@ -345,7 +416,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="b">
+<tr>
                 
 <td colspan="1" rowspan="1">bits</td>
                 <td colspan="1" rowspan="1">4</td>
@@ -353,7 +424,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="a">
+<tr>
                 
 <td colspan="1" rowspan="1">float</td>
                 <td colspan="1" rowspan="1">8</td>
@@ -361,7 +432,7 @@ if (VERSION > 3) {
             
 </tr>
             
-<tr class="b">
+<tr>
                 
 <td colspan="1" rowspan="1">hbstring</td>
                 <td colspan="1" rowspan="1">java expression</td>
@@ -370,77 +441,52 @@ if (VERSION > 3) {
 </tr>
         
 </table>
-        
 <p>
             The Java records are regenerated each time the record generator is 
             run, however the test stubs are only created if the test stub does 
             not already exist.  What this means is that you may change test 
             stubs but not the generated records.
         </p>
-    
-    
 <a name="Custom+Field+Types"></a>
-<div class="h4">
-<h4>Custom Field Types<a title="Permanent link" class="headerlink" 
href="#Custom+Field+Types">#</a>
-</h4>
-</div>
-        
+<h3 class="boxed">Custom Field Types</h3>
 <p>
             Occasionally the builtin types are not enough.  More control
             over the encoding and decoding of the streams is required.  This
             can be achieved using a custom type.
         </p>
-        
 <p>
             A custom type lets you escape to java to define the way in which
             the field encodes and decodes.  To code a custom type you
             declare your field like this:
         </p>
-        
 <pre class="code">
     &lt;field type="custom:org.apache.poi.hssf.record.LinkedDataFormulaField"
         size="var" name="formula of link" description="formula"/&gt;
         </pre>
-        
 <p>
             Where the class name specified after <span 
class="codefrag">custom:</span> is a
             class implementing the interface <span 
class="codefrag">CustomField</span>.
         </p>
-        
 <p>
             You can then implement the encoding yourself.
         </p>
-    
-    
 <a name="How+it+Works"></a>
-<div class="h4">
-<h4>How it Works<a title="Permanent link" class="headerlink" 
href="#How+it+Works">#</a>
-</h4>
-</div>
-        
+<h3 class="boxed">How it Works</h3>
 <p>
             The record generation works by taking an XML file and styling it 
             using XSLT.  Given that XSLT is a little limited in some ways it 
was
             necessary to add a little Java code to the mix.   
         </p>
-        
 <p>
             See record.xsl, record_test.xsl, FieldIterator.java, 
             RecordUtil.java, RecordGenerator.java
         </p>
-        
 <p>
             There is a corresponding "type" generator for HWPF.
             See the HWPF documentation for details.
         </p>
-    
-    
 <a name="Limitations"></a>
-<div class="h4">
-<h4>Limitations<a title="Permanent link" class="headerlink" 
href="#Limitations">#</a>
-</h4>
-</div>
-        
+<h3 class="boxed">Limitations</h3>
 <p>
             The record generator does not handle all possible record types and
             goes not intend to perform this function.  When dealing with a
@@ -449,57 +495,42 @@ if (VERSION > 3) {
             generator.  The main point of the record generator is to save
             time, so keep that in mind.
         </p>
-        
 <p>
             Currently the the XSL file that generates the record calls out to 
             Java objects.  The Java code for the record generation is
             currently quite messy with minimal comments.  
         </p>
-    
-
-
-
-<div id="authors" align="right">by&nbsp;Glen Stampoultzis,&nbsp;Andrew C. 
Oliver</div>
-</div>
 </div>
+
+<p align="right">
+<font size="-2">by&nbsp;Glen Stampoultzis,&nbsp;Andrew C. Oliver</font>
+</p>
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</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 &copy; 2002-2018&nbsp;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>
+        Copyright &copy;
+         2001-2018 <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>
 </div>
-<!--================= end Credits ==================-->
-</td>
-</tr>
-</tbody>
-</table>
+<div id="feedback">
+        Send feedback about the website to:
+    <a id="feedbackto" 
href="mailto:[email protected]?subject=Feedback%C2%A0components/spreadsheet/record-generator.html";>[email protected]</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
 </div>
-<!--================= end Footer ==================-->
 </body>
 </html>

Modified: poi/site/publish/components/spreadsheet/use-case.html
URL: 
http://svn.apache.org/viewvc/poi/site/publish/components/spreadsheet/use-case.html?rev=1836244&r1=1836243&r2=1836244&view=diff
==============================================================================
--- poi/site/publish/components/spreadsheet/use-case.html (original)
+++ poi/site/publish/components/spreadsheet/use-case.html Wed Jul 18 23:27:21 
2018
@@ -1,217 +1,303 @@
-<!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>HSSF Use Cases</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> &gt; <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 
&ndash; 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">&nbsp; 
+                    <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>
-        
-<div class="menuItem">
-<a href="how-to.html">HOWTO</a>
-</div>
-        
-<div class="menuItem">
-<a href="converting.html">HSSF to SS Converting</a>
-</div>
-        
-<div class="menuItem">
-<a href="formula.html">Formula Support</a>
-</div>
-        
-<div class="menuItem">
-<a href="eval.html">Formula Evaluation</a>
-</div>
-                   
-<div class="menuItem">
-<a href="eval-devguide.html">Eval Dev Guide</a>
-</div>
-        
-<div class="menuItem">
-<a href="examples.html">Examples</a>
-</div>
-        
-<div class="menuItem">
-<span class="menuSelected">Use Case</span>
-</div>
-        
-<div class="menuItem">
-<a href="diagrams.html">Pictorial Docs</a>
-</div>
-        
-<div class="menuItem">
-<a href="limitations.html">Limitations</a>
-</div>
-        
-<div class="menuItem">
-<a href="user-defined-functions.html">User Defined Functions</a>
-</div>
-        
-<div class="menuItem">
-<a href="excelant.html">ExcelAnt Tests</a>
 </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>
-<div class="menu">
-<span class="menuLabel">Contributer's Guide</span>
-        
-<div class="menuItem">
-<a href="hacking-hssf.html">Hacking HSSF</a>
-</div>
-        
-<div class="menuItem">
-<a href="record-generator.html">Record Generator</a>
-</div>
-        
-<div class="menuItem">
-<a href="chart.html">Charts</a>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+
+             &nbsp;
+           </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="../../apidocs/index.html">Javadocs</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>HSSF Use Cases</h1>
+<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="h3">
-  
-  
-    
-<a name="HSSF+Use+Cases"></a>
-<div class="h3">
-<h3>HSSF Use Cases<a title="Permanent link" class="headerlink" 
href="#HSSF+Use+Cases">#</a>
-</h3>
+<div class="menuitem">
+<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/how-to.html">HOWTO</a>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/converting.html">HSSF to SS 
Converting</a>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/formula.html">Formula Support</a>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/examples.html">Examples</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Use Case</div>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/limitations.html">Limitations</a>
+</div>
+<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="menuitem">
+<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a>
+</div>
+<div class="menuitem">
+<a href="../../components/spreadsheet/record-generator.html">Record 
Generator</a>
+</div>
+<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>HSSF Use Cases</h1>
+<div id="front-matter"></div>
     
+<a name="HSSF+Use+Cases"></a>
+<h2 class="boxed">HSSF Use Cases</h2>
+<div class="section">
 <a name="Use+Case+1%3A+Read+existing+HSSF"></a>
-<div class="h4">
-<h4>Use Case 1: Read existing HSSF<a title="Permanent link" class="headerlink" 
href="#Use+Case+1%3A+Read+existing+HSSF">#</a>
-</h4>
-</div>
-
-
+<h3 class="boxed">Use Case 1: Read existing HSSF</h3>
 <p>
 <strong>Primary Actor:</strong> HSSF client</p>
-
 <p>
 <strong>Scope:</strong> HSSF</p>
-
 <p>
 <strong>Level:</strong> Summary</p>
-
 <p>
 <strong>Stakeholders and Interests:</strong>
 </p>
-
 <ul>
        
 <li>HSSF client- wants to read content
@@ -223,17 +309,13 @@ if (VERSION > 3) {
        file system</li>
 
 </ul>
-
 <p>
 <strong>Precondition:</strong> None</p>
-
 <p>
 <strong>Minimal Guarantee:</strong> None</p>
-
 <p>
 <strong>Main Success Guarantee:</strong>
 </p>
-
 <ol>
        
 <li>HSSF client requests HSSF to read
@@ -248,35 +330,22 @@ if (VERSION > 3) {
        file (use case 4, read workbook entry)</li>
 
 </ol>
-
 <p>
 <strong>Extensions:</strong>
 </p>
-
 <p>2a. Exceptions
 thrown by POIFS will be passed on to the HSSF client.</p>
-
-    
 <a name="Use+Case+2%3A+Write+HSSF+file"></a>
-<div class="h4">
-<h4>Use Case 2: Write HSSF file<a title="Permanent link" class="headerlink" 
href="#Use+Case+2%3A+Write+HSSF+file">#</a>
-</h4>
-</div>
-
-
+<h3 class="boxed">Use Case 2: Write HSSF file</h3>
 <p>
 <strong>Primary Actor:</strong> HSSF client</p>
-
 <p>
 <strong>Scope:</strong> HSSF</p>
-
 <p>
 <strong>Level:</strong> Summary</p>
-
 <p>
 <strong>Stakeholders and Interests:</strong>
 </p>
-
 <ul>
        
 <li>HSSF client- wants to write file
@@ -289,11 +358,9 @@ thrown by POIFS will be passed on to the
        system out.</li>
 
 </ul>
-
 <p>
 <strong>Precondition:</strong>
 </p>
-
 <ul>
        
 <li>File has been
@@ -301,14 +368,11 @@ thrown by POIFS will be passed on to the
        or file has been created (use case 3, create HSSF file)</li>
 
 </ul>
-
 <p>
 <strong>Minimal Guarantee:</strong> None</p>
-
 <p>
 <strong>Main Success Guarantee:</strong>
 </p>
-
 <ol>
        
 <li>HSSF client
@@ -324,37 +388,23 @@ thrown by POIFS will be passed on to the
        obtained from the HSSF client (POIFS use case 2, write file 
system).</li>
 
 </ol>
-
 <p>
 <strong>Extensions:</strong>
 </p>
-
 <p>3a. Exceptions
 from POIFS are passed to the HSSF client.</p>
-
-
-    
 <a name="Use+Case+3%3ACreate+HSSF+file"></a>
-<div class="h4">
-<h4>Use Case 3:Create HSSF file<a title="Permanent link" class="headerlink" 
href="#Use+Case+3%3ACreate+HSSF+file">#</a>
-</h4>
-</div>
-
-
+<h3 class="boxed">Use Case 3:Create HSSF file</h3>
 <p>
 <strong>Primary Actor:</strong> HSSF client</p>
-
 <p>
 <strong>Scope:</strong> HSSF</p>
-
 <p>
 
 <strong>Level:</strong> Summary</p>
-
 <p>
 <strong>Stakeholders and Interests:</strong>
 </p>
-
 <ul>
        
 <li>HSSF client- wants to create a new
@@ -367,18 +417,14 @@ from POIFS are passed to the HSSF client
        file system.</li>
 
 </ul>
-
 <p>
 <strong>Precondition:</strong>
 </p>
-
 <p>
 <strong>Minimal Guarantee:</strong> None</p>
-
 <p>
 <strong>Main Success Guarantee:</strong>
 </p>
-
 <ol>
        
 <li>HSSF requests
@@ -386,33 +432,21 @@ from POIFS are passed to the HSSF client
        system)</li>
 
 </ol>
-
 <p>
 <strong>Extensions:</strong>
 None</p>
-
-
-    
 <a name="Use+Case+4%3A+Read+workbook+entry"></a>
-<div class="h4">
-<h4>Use Case 4: Read workbook entry<a title="Permanent link" 
class="headerlink" href="#Use+Case+4%3A+Read+workbook+entry">#</a>
-</h4>
-</div>
-
+<h3 class="boxed">Use Case 4: Read workbook entry</h3>
 <p>
 <strong>Primary Actor:</strong> HSSF</p>
-
 <p>
 <strong>Scope:</strong> HSSF</p>
-
 <p>
 
 <strong>Level:</strong> Summary</p>
-
 <p>
 <strong>Stakeholders and Interests:</strong>
 </p>
-
 <ul>
        
 <li>HSSF - knows how to read the
@@ -422,11 +456,9 @@ None</p>
        system.</li>
 
 </ul>
-
 <p>
 <strong>Precondition:</strong>
 </p>
-
 <ul>
        
 <li>The file
@@ -435,15 +467,12 @@ None</p>
        use case 5, write workbook entry).</li>
 
 </ul>
-
 <p>
 <strong>Minimal
 Guarantee:</strong> None</p>
-
 <p>
 <strong>Main Success Guarantee:</strong>
 </p>
-
 <ol>
        
 <li>
@@ -459,37 +488,23 @@ Guarantee:</strong> None</p>
        the InputStream provided by POIFS</li>
 
 </ol>
-
 <p>
 <strong>Extensions:</strong>
 </p>
-
 <p>3a. Exceptions
 thrown by POIFS will be passed on</p>
-
-    
 <a name="Use+Case+5%3A+Write+workbook+entry"></a>
-<div class="h4">
-<h4>Use Case 5: Write workbook entry<a title="Permanent link" 
class="headerlink" href="#Use+Case+5%3A+Write+workbook+entry">#</a>
-</h4>
-</div>
-
-
-
+<h3 class="boxed">Use Case 5: Write workbook entry</h3>
 <p>
 <strong>Primary Actor:</strong> HSSF</p>
-
 <p>
 <strong>Scope:</strong> HSSF</p>
-
 <p>
 
 <strong>Level:</strong> Summary</p>
-
 <p>
 <strong>Stakeholders and Interests:</strong>
 </p>
-
 <ul>
        
 <li>HSSF - knows how to manage the
@@ -499,12 +514,10 @@ thrown by POIFS will be passed on</p>
        system.</li>
 
 </ul>
-
 <p>
 <strong>Precondition:</strong> 
 
 </p>
-
 <ul>
        
 <li>Either an existing HSSF file has
@@ -512,14 +525,11 @@ thrown by POIFS will be passed on</p>
        been created (use case 3, create HSSF file).</li>
 
 </ul>
-
 <p>
 <strong>Minimal Guarantee:</strong> None</p>
-
 <p>
 <strong>Main Success Guarantee:</strong>
 </p>
-
 <ol>
        
 <li>HSSF
@@ -533,55 +543,39 @@ thrown by POIFS will be passed on</p>
        write new file to file system)</li>
 
 </ol>
-
 <p>
 <strong>Extensions:</strong>None</p>
-
-
-
-
-
-<div id="authors" align="right">by&nbsp;Marc Johnson</div>
 </div>
+
+<p align="right">
+<font size="-2">by&nbsp;Marc Johnson</font>
+</p>
 </div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</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 &copy; 2002-2018&nbsp;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 &copy;
+         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/use-case.html";>[email protected]</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
 </div>
-<!--================= end Footer ==================-->
 </body>
 </html>

Modified: poi/site/publish/components/spreadsheet/user-defined-functions.html
URL: 
http://svn.apache.org/viewvc/poi/site/publish/components/spreadsheet/user-defined-functions.html?rev=1836244&r1=1836243&r2=1836244&view=diff
==============================================================================
--- poi/site/publish/components/spreadsheet/user-defined-functions.html 
(original)
+++ poi/site/publish/components/spreadsheet/user-defined-functions.html Wed Jul 
18 23:27:21 2018
@@ -1,235 +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>User Defined Functions</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>
+<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> &gt; <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 
&ndash; 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">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
 </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>
+<!--+
+    |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 class="menu">
-<span class="menuLabel">HSSF+XSSF</span>
-        
-<div class="menuItem">
-<a href="index.html">Overview</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="quick-guide.html">Quick Guide</a>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+
+             &nbsp;
+           </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="how-to.html">HOWTO</a>
+<div class="menuitem">
+<a href="../../apidocs/index.html">Javadocs</a>
 </div>
-        
-<div class="menuItem">
-<a href="converting.html">HSSF to SS Converting</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="formula.html">Formula Support</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a>
 </div>
-        
-<div class="menuItem">
-<a href="eval.html">Formula Evaluation</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/how-to.html">HOWTO</a>
 </div>
-                   
-<div class="menuItem">
-<a href="eval-devguide.html">Eval Dev Guide</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/converting.html">HSSF to SS 
Converting</a>
 </div>
-        
-<div class="menuItem">
-<a href="examples.html">Examples</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/formula.html">Formula Support</a>
 </div>
-        
-<div class="menuItem">
-<a href="use-case.html">Use Case</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a>
 </div>
-        
-<div class="menuItem">
-<a href="diagrams.html">Pictorial Docs</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a>
 </div>
-        
-<div class="menuItem">
-<a href="limitations.html">Limitations</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/examples.html">Examples</a>
 </div>
-        
-<div class="menuItem">
-<span class="menuSelected">User Defined Functions</span>
+<div class="menuitem">
+<a href="../../components/spreadsheet/use-case.html">Use Case</a>
 </div>
-        
-<div class="menuItem">
-<a href="excelant.html">ExcelAnt Tests</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a>
 </div>
-    
+<div class="menuitem">
+<a href="../../components/spreadsheet/limitations.html">Limitations</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="menupage">
+<div class="menupagetitle">User Defined Functions</div>
 </div>
-        
-<div class="menuItem">
-<a href="record-generator.html">Record Generator</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/excelant.html">ExcelAnt Tests</a>
 </div>
-        
-<div class="menuItem">
-<a href="chart.html">Charts</a>
+<div class="menuitem">
+<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a>
 </div>
-    
+<div class="menuitem">
+<a href="../../components/spreadsheet/record-generator.html">Record 
Generator</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>User Defined Functions</h1>
+<div class="menuitem">
+<a href="../../components/spreadsheet/chart.html">Charts</a>
 </div>
-<div class="h3">
-    
-  
+</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>User Defined Functions</h1>
+<div id="front-matter"></div>
     
 <a name="How+to+Create+and+Use+User+Defined+Functions"></a>
-<div class="h3">
-<h3>How to Create and Use User Defined Functions<a title="Permanent link" 
class="headerlink" href="#How+to+Create+and+Use+User+Defined+Functions">#</a>
-</h3>
-</div>
-
-     
+<h2 class="boxed">How to Create and Use User Defined Functions</h2>
+<div class="section">
 <a name="Description"></a>
-<div class="h4">
-<h4>Description<a title="Permanent link" class="headerlink" 
href="#Description">#</a>
-</h4>
-</div>
-            
+<h3 class="boxed">Description</h3>
 <p>This document describes the User Defined Functions within POI.
             User defined functions allow you to take code that is written in 
VBA
             and re-write in Java and use within POI. Consider the following 
example.</p>
-     
-     
 <a name="An+Example"></a>
-<div class="h4">
-<h4>An Example<a title="Permanent link" class="headerlink" 
href="#An+Example">#</a>
-</h4>
-</div>
-        
+<h3 class="boxed">An Example</h3>
 <p>Suppose you are given a spreadsheet that can calculate the principal and 
interest
         payments for a mortgage.  The user enters the principal loan amount, 
the interest rate
         and the term of the loan.  The Excel spreadsheet does the rest.</p>
-        
 <p>
             
-<img alt="mortgage calculation spreadsheet" 
src="../resources/images/simple-xls-with-function.jpg">
+<img alt="mortgage calculation spreadsheet" 
src="images/simple-xls-with-function.jpg">
         </p>
-        
 <p>When you actually look at the workbook you discover that rather than having
         the formula in a cell it has been written as VBA function.  You review 
the 
         function and determine that it could be written in Java:</p>
-        
 <p>
             
-<img alt="VBA code" src="../resources/images/calculatePayment.jpg">
+<img alt="VBA code" src="images/calculatePayment.jpg">
         </p>
-        
 <p>If we write a small program to try to evaluate this cell, we'll fail.  
Consider this source code:</p>
-        
 <pre class="code">
 import java.io.File ;
 import java.io.FileInputStream ;
@@ -290,10 +369,7 @@ public class Evaluator {
 }
         
 </pre>
-        
 <p>If you run this code, you're likely to get the following error:</p>
-        
-       
 <pre class="code">
 Exception in thread "main" 
org.apache.poi.ss.formula.eval.NotImplementedException: Error evaluating cell 
Sheet1!B4
     at 
org.apache.poi.ss.formula.WorkbookEvaluator.addExceptionInfo(WorkbookEvaluator.java:321)
@@ -310,27 +386,15 @@ Caused by: org.apache.poi.ss.formula.eva
     ... 4 more
         
 </pre>
-        
-        
 <p>How would we make it so POI can use this sheet?</p>
-     
-     
-     
 <a name="Defining+Your+Function"></a>
-<div class="h4">
-<h4>Defining Your Function<a title="Permanent link" class="headerlink" 
href="#Defining+Your+Function">#</a>
-</h4>
-</div>
-        
+<h3 class="boxed">Defining Your Function</h3>
 <p>To 'convert' this code to Java and make it available to POI you need to 
implement
         a FreeRefFunction instance.  FreeRefFunction is an interface in the 
org.apache.poi.ss.formula.functions 
         package.  This interface defines one method, evaluate(ValueEval[] 
args, OperationEvaluationContext ec),
         which is how you will receive the argument values from POI.</p>
-        
 <p>The evaluate() method as defined above is where you will convert the 
ValueEval instances to the 
         proper number types.  The following code snippet shows you how to get 
your values:</p>
- 
-      
 <pre class="code">
 public class CalculateMortgage implements FreeRefFunction {
 
@@ -356,13 +420,9 @@ public ValueEval evaluate( ValueEval[] a
         rate  = OperandResolver.coerceValueToDouble( v2 ) ;
         years = OperandResolver.coerceValueToDouble( v3 ) ;
      </pre>
-     
-     
 <p>The first thing we do is check the number of arguments being passed since 
there is no sense
      in attempting to go further if you are missing critical information.</p>
-     
 <p>Next we declare our variables, in our case we need variables for:</p>
-     
 <ul>
         
 <li>principal - the amount of the loan</li>
@@ -374,18 +434,15 @@ public ValueEval evaluate( ValueEval[] a
 <li>result - the result of the calculation</li>
      
 </ul>
-     
 <p>Next, we use the OperandResolver to convert the ValueEval instances to 
doubles, though not directly.  
      First we start by getting discreet values.  Using the 
OperandResolver.getSingleValue() method
      we retrieve each of the values passed in by the cell in the spreadsheet.  
Next, we use the
      OperandResolver again to convert the ValueEval instances to doubles, in 
this case.  This
      class has other methods of coercion for getting Strings, ints and 
booleans.  Now that we've
      got our primitive values we can move on to calculating the value.</p>
-     
 <p>As shown previously, we have the VBA source.  We need to add code to our 
class to calculate 
        the payment.  To do this you could simply add it to the method we've 
already created but I've
        chosen to add it as its own method.  Add the following method: </p>
-       
 <pre class="code">
 public double calculateMortgagePayment( double p, double r, double y ) {
 
@@ -398,17 +455,13 @@ public double calculateMortgagePayment(
     return principalAndInterest ;
 }      
        </pre>
-       
 <p>The biggest change necessary is related to the exponents; Java doesn't have 
a notation for this
                so we had to add calls to Math.pow().  Now we need to add this 
call to our previous method:</p>
-       
 <pre class="code">
         result = calculateMortgagePayment( principal, rate, years ) ;  
                </pre>
-       
 <p>Having done that, the last things we need to do are to check to make sure 
we didn't get a bad result and,
                if not, we need to return the value. Add the following code to 
the class:</p>
-       
 <pre class="code">
 private void checkValue(double result) throws EvaluationException {
     if (Double.isNaN(result) || Double.isInfinite(result)) {
@@ -416,9 +469,7 @@ private void checkValue(double result) t
     }
 } 
                </pre>
-     
 <p>Then add a line of code to our evaluate method to call this new static 
method, complete our try/catch and return the value:</p>
-       
 <pre class="code">
         checkValue(result);
         
@@ -429,11 +480,7 @@ private void checkValue(double result) t
 
     return new NumberEval( result ) ;
                </pre>
-               
-               
 <p>So the whole class would be as follows:</p>
-               
-       
 <pre class="code">
 import org.apache.poi.ss.formula.OperationEvaluationContext ;
 import org.apache.poi.ss.formula.eval.ErrorEval ;
@@ -510,24 +557,13 @@ public class CalculateMortgage implement
 }
        
                </pre>
-               
-               
 <p>Great!  Now we need to go back to our original program that failed to 
evaluate our cell and add code that will allow it run our new Java code.</p>
-
-     
-     
-     
 <a name="Registering+Your+Function"></a>
-<div class="h4">
-<h4>Registering Your Function<a title="Permanent link" class="headerlink" 
href="#Registering+Your+Function">#</a>
-</h4>
-</div>
-               
+<h3 class="boxed">Registering Your Function</h3>
 <p>Now we need to register our function in the Workbook, so that the Formula 
Evaluator can resolve the name "calculatePayment"
 and map it to the actual implementation (CalculateMortgage). This is done 
using the UDFFinder object. 
 The UDFFinder manages FreeRefFunctions which are our analogy for the VBA code. 
 We need to create a UDFFinder. There are
                        a few things we need to know in order to do this:</p>
-        
 <ul>
           
 <li>The name of the function in the VBA code (in our case it is 
calculatePayment)</li>
@@ -535,13 +571,11 @@ The UDFFinder manages FreeRefFunctions w
 <li>The Class name of our FreeRefFunction</li>
         
 </ul>
-               
 <p>UDFFinder is actually an interface, so we need to use an actual 
implementation of this interface.  Therefore we use the 
org.apache.poi.ss.formula.udf.DefaultUDFFinder class.  If you refer to the 
Javadocs you'll see that this class expects to get two arrays, one
                containing the alias and the other containing an instance of 
the class that will represent that alias.  In our case our alias will be 
calculatePayment 
                and our class instance will be of the  CalculateMortgage type.  
This class needs to be available at compile and runtime.  Be sure to keep these 
arrays
                well organized because you'll run into problems if these arrays 
are of different sizes or the alias aren't in the same relative position in 
their respective
                arrays.  Add the following code:</p>
-         
 <pre class="code">
 String[] functionNames = { "calculatePayment" } ;
 FreeRefFunction[] functionImpls = { new CalculateMortgage() } ; 
@@ -549,16 +583,11 @@ FreeRefFunction[] functionImpls = { new
 UDFFinder udfs = new DefaultUDFFinder( functionNames, functionImpls ) ;
 UDFFinder udfToolpack = new AggregatingUDFFinder( udfs ) ;     
                </pre>
-         
 <p>Now we have our UDFFinder instance and we've created the 
AggregatingUDFFinder instance.  The last step is to pass this to our 
Workbook:</p>
-         
-         
 <pre class="code">
 workbook.addToolPack(udfToolpack);
                </pre>
-         
 <p>So now the whole class will look like this:</p>
-         
 <pre class="code"> 
 import java.io.File ;
 import java.io.FileInputStream ;
@@ -625,67 +654,47 @@ public class Evaluator {
 }
                
          </pre>
-         
 <p>Now that our evaluator is aware of the UDFFinder which in turn is aware of 
our FreeRefFunction, we're ready to re-run our example:</p>
-        
 <pre class="code">Evaluator mortgage-calculation.xls Sheet1!B4</pre>
-        
 <p>which prints the following output in the console:</p>
-         
 <pre class="code">
 fileName: mortgage-calculation.xls
 cell: Sheet1!B4
 returns value: org.apache.poi.ss.usermodel.CellValue [790.7936267415464]
         </pre>
-               
 <p>That is it!  Now you can create Java code and register it, allowing your 
POI based appliction to run spreadsheets that previously were inaccessible.</p>
-               
 <p>This example can be found in the <a 
href="http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/formula";>src/examples/src/org/apache/poi/ss/examples/formula</a>
 folder in the source.</p>
-    
-  
-
-
-<div id="authors" align="right">by&nbsp;Jon Svede,&nbsp;Brian Bush</div>
-</div>
 </div>
+
+<p align="right">
+<font size="-2">by&nbsp;Jon Svede,&nbsp;Brian Bush</font>
+</p>
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</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 &copy; 2002-2018&nbsp;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 &copy;
+         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/user-defined-functions.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]

Reply via email to