mirror of https://github.com/apache/poi.git
1143 lines
28 KiB
HTML
1143 lines
28 KiB
HTML
<html>
|
|
<head>
|
|
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<meta content="text/html; charset=ISO-8859-1">
|
|
<title>POI 1.0 Vision Document</title>
|
|
<style type="text/css">
|
|
body { background-color: white; font-size: normal; color: black ; }
|
|
a { color: #525d76; }
|
|
a.black { color: #000000;}
|
|
table {border-width: 0; width: 100%}
|
|
table.centered {text-align: center}
|
|
table.title {text-align: center; width: 80%}
|
|
img{border-width: 0;}
|
|
span.s1 {font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #000000; }
|
|
span.s1_white { font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #ffffff; }
|
|
span.title {font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #000000; }
|
|
span.c1 {color: #000000; font-family: Helvetica, Arial, sans-serif}
|
|
tr.left {text-align: left}
|
|
hr { width: 100%; size: 2}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<table width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
<tr>
|
|
<td valign="top" align="left"><a href="http://jakarta.apache.org/index.html"><img hspace="0" vspace="0" border="0" src="images/jakarta-logo.gif"></a></td><td width="100%" valign="top" align="left" bgcolor="#ffffff"><img hspace="0" vspace="0" border="0" align="right" src="images/header.gif"></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2" bgcolor="#525d76"><span class="c1"><a class="black" href="http://www.apache.org/">www.apache.org ></a><a class="black" href="http://jakarta.apache.org/">jakarta.apache.org ></a><a href="http://jakarta.apache.org/poi/" class="black">jakarta.apache.org/poi</a></span></td>
|
|
</tr>
|
|
<tr>
|
|
<td height="8"></td>
|
|
</tr>
|
|
</table>
|
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
|
<tr>
|
|
<td width="1%">
|
|
<br>
|
|
</td><td nowrap="1" valign="top" width="14%">
|
|
<br>
|
|
<span class="s1">Navigation</span>
|
|
<br>
|
|
<a class="s1" href="../index.html">Main</a>
|
|
<br>
|
|
<br>
|
|
<span class="s1">Planning Documents</span>
|
|
<br>
|
|
<a class="s1" href="POI10Vision.html">1.0 Vision</a>
|
|
<br>
|
|
<a class="s1" href="POI20Vision.html">2.0 Vision</a>
|
|
<br>
|
|
</td><td width="1%">
|
|
<br>
|
|
</td><td align="left" valign="top" width="*">
|
|
<title>POI 1.0 Vision Document</title>
|
|
<table width="100%" align="center" class="centered">
|
|
<tbody>
|
|
<tr>
|
|
<td align="center">
|
|
<table border="0" cellpadding="1" cellspacing="0" class="title">
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#525d76">
|
|
<table width="100%" border="0" cellpadding="2" cellspacing="0" class="centered">
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#f3dd61"><span class="title">POI 1.0 Vision Document</span></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<font size="-2" color="#000000">
|
|
<p>
|
|
<a href="mailto:"></a>
|
|
</p>
|
|
</font>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>Preface</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
(21-Jan-02) While this document is just full of useful project
|
|
introductory information and I do suggest those interested in getting
|
|
involved in the project read it, it is woefully out of date.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
We deliberately allowed this document to run out of date because it
|
|
is a good reflection of what the original vision was for POI 1.0.
|
|
You'll note that some of the terminology is not used in quite the same
|
|
way any longer. I've made some minor corrections where reading this
|
|
confused me. An example: in some places this document may refer to
|
|
POI API instead of POIFS API. When this vision was written we had
|
|
an incomplete understanding of the project.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
Lastly, the scope of the project expanded dramatically near the end
|
|
of the 1.0 cycle. Our vision at the time was to focus merely on the
|
|
Excel port (having no idea how the project would grow or be received)
|
|
and provide the OLE 2 Compound Document port for others to port later
|
|
formats. We now plan to spearhead these ports under the umbrella of
|
|
the POI project. So, you've been warned. Read on, but just realize
|
|
that we had a fuzzy view of things to come, and hindsight is 20-20.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
If I recall major holes were: a complete understanding of the format
|
|
of OLE 2 Compound Document format, Excel file format, and exactly how
|
|
Cocoon 2 Serializers worked. (that just about covers the whole range
|
|
huh?)
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>1. Introduction</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>1.1 Purpose of this document</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The purpose of this document is to
|
|
collect, analyze and define high-level requirements, user needs and
|
|
features of the HSSF Serializer for Cocoon 2 and related libraries.
|
|
The HSSF Serializer is a java class supporting the Serializer
|
|
interface from the Cocoon 2 project and outputting in a compatible
|
|
format of that used by the spreadsheet program Microsoft Excel '97.
|
|
The HSSF Serializer will be responsible for converting XML
|
|
spreadsheet-like documents into Excel-compatible XLS spreadsheets.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>1.2 Project Overview</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
Many web apps today hit a brick wall
|
|
when it comes to the user request that they be able to easily
|
|
manipulate their reports and data extracts in the popular Microsoft
|
|
Excel spreadsheet format. This often causes inferior technologies to be
|
|
chosen for the project simply because they easily support this
|
|
format. This project seeks to extend existing XML, Java and Apache
|
|
Cocoon 2 project technologies by:
|
|
</p>
|
|
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
providing an extensible library
|
|
(POIFS) which reads/writes in a compatable format to OLE 2 Compound
|
|
Document Format (aka Structured Storage Format) for easy
|
|
implementation of other document types;
|
|
</li>
|
|
|
|
<li>
|
|
providing a library (HSSF) for
|
|
manipulating spreadsheet data and outputting it in a compatible
|
|
format to Microsoft Excel XLS format;
|
|
</li>
|
|
|
|
<li>
|
|
and providing a Cocoon 2
|
|
Serializer (HSSFSerializer) for serializing XML documents as
|
|
Excel-compatible spreadsheets.
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>2. User Description</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>2.1 User/Market Demographics</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
There are a number of enthusiastic
|
|
users of XML, UNIX and Java technology. Secondly, the Microsoft
|
|
solution for outputting Office Document formats often involves
|
|
actually manipulating the software as an OLE Server. This method
|
|
provides extremely low performance, extremely high overhead and is
|
|
only capable of handling one document at a time.
|
|
</p>
|
|
|
|
<ol>
|
|
|
|
<li>
|
|
Our intended audience for the HSSF
|
|
Serializer portion of this project are developers writing reports or
|
|
data extracts in XML format.
|
|
</li>
|
|
|
|
<li>
|
|
Our intended audience for the HSSF
|
|
library portion of this project is ourselves as we are developing
|
|
the Serializer and anyone who needs to write to Excel spreadsheets
|
|
in a non-XML Java environment or who has specific needs not
|
|
addressed by the Serializer.
|
|
</li>
|
|
|
|
<li>
|
|
Our intended audience for the
|
|
"POIFS" OLE 2 Compound Document format reader/writer is
|
|
ourselves as we are writing the HSSF library and secondly, anyone
|
|
wishing to provide other libraries for reading/writing OLE 2
|
|
Compound Document Format in Java.
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>2.2. User environment</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The users of this software shall be
|
|
developers in a Java environment on any Operating System or power
|
|
users who are capable of XML document generation/deployment.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>2.3. Key User Needs</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The OLE 2 Compound Document format is
|
|
undocumented for all practical purposes and cryptic for all
|
|
impractical purposes. Developer needs in this area include
|
|
documentation and an easy to use library for reading and writing in
|
|
this format without requiring the developer to have intimate
|
|
knowledge of the format.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
There is currently no good way to write
|
|
to Microsoft Excel documents from Java or from a non-Microsoft
|
|
Windows based platform for that matter. Developers need an easy to
|
|
use library that supports a reasonable feature set and allows
|
|
seperation of data from formatting/stylistic concerns.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
There is currently no good way to
|
|
transform XML data to Microsoft Excel. Apache's Cocoon 2 project
|
|
supplies a complete framework for XML, but nothing for outputting in
|
|
Excel's XLS format. Developers and power users alike need a simple
|
|
method to output XML documents to Excel through server-side
|
|
processing.
|
|
</p>
|
|
|
|
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>2.4. Alternatives and Competition</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
Originally there weren't any decent <a href="../hssf/alternatives.html">alternatives</a> for reading or writing
|
|
to Excel. This has changed somewhat.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>3. Project Overview</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>3.1. Project Perspective</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The produced code shall be licensed by
|
|
the Apache License as used by the Cocoon 2 project and maintained on
|
|
a project page until such time as the Cocoon 2 developers accept it
|
|
as a donation (at which time the copyright will be turned over to
|
|
them).
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>3.2. Project Position Statement</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
For developers on a Java and/or XML
|
|
environment this project will provide all the tools necessary for
|
|
outputting XML data in the Microsoft Excel format. This project seeks
|
|
to make the use of Microsoft Windows based servers unnecessary for
|
|
file format considerations and to fully document the OLE 2 Compound
|
|
Document format. The project aims not only to provide the tools for
|
|
serializing XML to Excel's file format and the tools for writing to
|
|
that file format from Java, but also to provide the tools for later
|
|
projects to convert other OLE 2 Compound Document formats to pure
|
|
Java APIs.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>3.3. Summary of Capabilities</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
HSSF Serializer for Apache Cocoon 2
|
|
</p>
|
|
|
|
<table width="100%" cellspacing="2" cellpadding="2" border="0">
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
Benefit
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
Supporting Features
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
Standard XML tag language for sheet data
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
Serializer will transform documents utilizing a defined tag
|
|
language
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
Utilize XML to output in Excel
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
Serializer will output in Excel
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
Java API to output in Excel on any platform
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
The project will develop an API that outputs in Excel using
|
|
pure Java.
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
Make it easy for developers to port other OLE 2 Compound
|
|
Document-based formats to Java.
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
The POIFS library will contain both a high-level abstraction
|
|
along with low-level constructs. The project will fully document
|
|
the OLE 2 Compound Document Format.
|
|
</font></td>
|
|
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>3.4. Assumptions and Dependencies</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
The HSSF Serializer will run on
|
|
any Java 2 supporting platform with Apache Cocoon 2 installed along
|
|
with the HSSF and POIFS APIs.
|
|
</li>
|
|
|
|
<li>
|
|
The HSSF API requires a Java 2
|
|
implementation and the POI API.
|
|
</li>
|
|
|
|
<li>
|
|
The POIFS API requires a Java 2
|
|
implementation.
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>4. Project Features</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The POIFS API will include:
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
Low level structures representing
|
|
the structures in a POI filesystems.
|
|
</li>
|
|
|
|
<li>
|
|
A low-level API for
|
|
creating/manipulating POI filesystems.
|
|
</li>
|
|
|
|
<li>
|
|
A set of high level interfaces
|
|
abstracting the user from the POI filesystem constructs and
|
|
representing it as a standard filesystem (Files, directories, etc)
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<p align="justify">
|
|
The HSSF API will include:
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
Low level structures representing
|
|
the structures in an Excel file.
|
|
</li>
|
|
|
|
<li>
|
|
A low-level API for creating and
|
|
manipulating Excel files and writing them into POI filesystems.
|
|
</li>
|
|
|
|
<li>
|
|
A high level model and style
|
|
interface for manipulating spreadsheet data without knowing anything
|
|
about the Excel format itself.
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>4.1 POI Filesystem API</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The POI Filesystem API includes:
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>An implementation of Big Blocks</li>
|
|
|
|
<li>An implementation of Small Blocks</li>
|
|
|
|
<li>An implementation of Header Blocks</li>
|
|
|
|
<li>An implementation of Block Allocation Tables</li>
|
|
|
|
<li>An implementation of Property Sets</li>
|
|
|
|
<li>An implementation of the POI
|
|
filesystem including functions to get and set the above constructs;
|
|
compound functions for reading/writing files/directories.
|
|
</li>
|
|
|
|
<li>An abstraction of the POI
|
|
filesystem providing interfaces representing Files, Directories,
|
|
FileSystems in normal terminology and encapulating the above
|
|
constructs.
|
|
</li>
|
|
|
|
<li>Full documentation of the POI file
|
|
format.
|
|
</li>
|
|
|
|
<li>Full documentation of the APIs and
|
|
interfaces provided through Javadoc, user documentation (aimed at
|
|
developers using the APIs)
|
|
</li>
|
|
|
|
<li>Examples aimed at teaching the
|
|
user to write code using POI. (titled: recipes for POI)
|
|
</li>
|
|
|
|
<li>Performance specifications.
|
|
(Example POI filesystems rated by some measure of complexity along
|
|
with system specifications and execution times for given operations)
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>4.2 HSSF API</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The HSSF API includes:
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>An implementation of Record
|
|
(binary 2 byte type followed by 2 byte size (n) followed by n bytes)</li>
|
|
|
|
<li>Implementations of many standard
|
|
record types mapping the data bytes to fields along with methods to
|
|
reserialize those fields</li>
|
|
|
|
<li>An implementation of the HSSF File
|
|
including functions to get/set the above constructs, create a blank
|
|
file with the minimum required record types and mappings between
|
|
getting/setting data and style in a workbook to the creation of
|
|
record types, and read HSSF files.</li>
|
|
|
|
<li>An abstraction of the HSSF file
|
|
format providing interfaces representing the HSSF File, HSSF
|
|
Workbook, HSSF Sheet, HSSF Column, HSSF Formulas in a manner
|
|
seperating the data from the styling and encapsulating the above
|
|
constructs.</li>
|
|
|
|
<li>Full documentation of the HSSF
|
|
file format (which will be a subset of the Excel '97 File format).
|
|
This must be done with care for legal reasons.</li>
|
|
|
|
<li>Full documentation of the APIs and
|
|
interfaces provided through Javadoc, user documentation (aimed at
|
|
developers using the apis).</li>
|
|
|
|
<li>Examples aimed at teaching
|
|
developers to use the APIs.
|
|
</li>
|
|
|
|
<li>Performance specifications.
|
|
(Example files rated by some measure of complexity along with system
|
|
specifications and execution times for given operations - possibly
|
|
the same files used for POI's tests)</li>
|
|
|
|
</ul>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>4.3 HSSF Serializer</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The HSSF Serializer subproject:
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>A class supporting the Cocoon 2
|
|
Serializer Interface.</li>
|
|
|
|
<li>An interface between the SAX
|
|
events and the HSSF APIs.</li>
|
|
|
|
<li>A specified tag language for using
|
|
with the Serializer.</li>
|
|
|
|
<li>Documentation on the tag language
|
|
for the HSSF Serializer</li>
|
|
|
|
<li>Normal javadocs.</li>
|
|
|
|
<li>Example XML files</li>
|
|
|
|
<li>Performance specifications.
|
|
(Example XML docs and stylesheets rated by some measure of
|
|
complexity along with system specifications and execution times)</li>
|
|
|
|
</ul>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>5. Other Product Requirements</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>5.1. Applicable Standards</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
All Java code will be 100% pure Java.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>5.2. System Requirements</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The minimum system requirements for POIFS are:
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>64 Mbytes memory</li>
|
|
|
|
<li>Java 2 environment</li>
|
|
|
|
<li>Pentium or better processor (or equivalent on other platforms)</li>
|
|
|
|
</ul>
|
|
|
|
<p align="justify">
|
|
The minimum system requirements for HSSF are:
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>64 Mbytes memory</li>
|
|
|
|
<li>Java 2 environment</li>
|
|
|
|
<li>Pentium or better processor (or equivalent on other platforms)</li>
|
|
|
|
<li>POIFS API</li>
|
|
|
|
</ul>
|
|
|
|
<p align="justify">
|
|
The minimum system requirements for the HSSF Serializer are:
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>64 Mbytes memory</li>
|
|
|
|
<li>Java 2 environment</li>
|
|
|
|
<li>Pentium or better processor (or equivalent on other platforms)</li>
|
|
|
|
<li>Cocoon 2</li>
|
|
|
|
<li>HSSF API</li>
|
|
|
|
<li>POI API</li>
|
|
|
|
</ul>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>5.3. Performance Requirements</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
All components must perform well enough
|
|
to be practical for use in a webserver environment (especially
|
|
Cocoon2/Tomcat/Apache combo)
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>5.4. Environmental Requirements</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The software will run primarily in
|
|
developer environments. We should make some allowances for
|
|
not-highly-technical users to write XML documents for the HSSF
|
|
Serializer. All other components will assume intermediate Java 2
|
|
knowledge. No XML knowledge will be required except for using the
|
|
HSSF Serializer. As much documentation as is practical shall be
|
|
required for all components as XML is relatively new, and the
|
|
concepts introduced for writing spreadsheets and to POI filesystems
|
|
will be brand new to Java and many Java developers.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>6. Documentation Requirements</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>6.1 POI Filesystem</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The filesystem as read and written by
|
|
POI shall be fully documented and explained so that the average Java
|
|
developer can understand it.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>6.2. POI API</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The POI API will be fully documented
|
|
through Javadoc. A walkthrough of using the high level POI API shall
|
|
be provided. No documentation outside of the Javadoc shall be
|
|
provided for the low-level POI APIs.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>6.3. HSSF File Format</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The HSSF File Format as implemented by
|
|
the HSSF API will be fully documented. No documentation will be
|
|
provided for features that are not supported by HSSF API that are
|
|
supported by the Excel 97 File Format. Care will be taken not to
|
|
infringe on any "legal stuff".
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>6.4. HSSF API</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The HSSF API will be documented by
|
|
javadoc. A walkthrough of using the high level HSSF API shall be
|
|
provided. No documentation outside of the Javadoc shall be provided
|
|
for the low level HSSF APIs.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>6.5. HSSF Serializer</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The HSSF Serializer will be documented
|
|
by javadoc.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>6.6 HSSF Serializer Tag language</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
The XML tag language along with
|
|
function and usage shall be fully documented. Examples will be
|
|
provided as well.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>7. Terminology</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>7.1 Filesystem</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
filesystem shall refer only to the POI formatted archive.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>7.2 File</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<p align="justify">
|
|
file shall refer to the embedded data stream within a
|
|
POI filesystem. This will be the actual embedded document.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<hr noshade="" size="1">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><i>Copyright © 2002 Apache Software Foundation</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right" width="100%">
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right" width="100%"><a href="http://krysalis.org/"><img alt="Krysalis Logo" src="images/krysalis-compatible.jpg"></a><a href="http://xml.apache.org/cocoon/"><img alt="Cocoon Logo" src="images/built-with-cocoon.gif"></a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</body>
|
|
</html>
|