This is the POI 2.0 cycle vision document. Although the vision has not changed and this document is certainly not out of date and the vision has not changed, the structure of the project has changed a bit. We're not going to change the vision document to reflect this (however proper that may be) because it would only involve deletion. There is no purpose in providing less information provided we give clarification.
This document was created before the POI components for Apache Cocoon were accepted into the Cocoon project itself. It was also written before POI was accepted into Jakarta. So while the vision hasn't changed some of the components are actually now part of other projects. We'll still be working on them on the same timeline roughly (minus the overhead of coordination with other groups), but they are no longer technically part of the POI project itself.
The purpose of this document is to collect, analyze and define high-level requirements, user needs, and features of the second release of the POI project software. The POI project currently consists of the following components: the HSSF Serializer, the HSSF library and the POIFS library.
By the completion of this release cycle the POI project will also include the HSSF Generator and the HWPF library.
The first release of the POI project was an astounding success. This release seeks to build on that success by:
There are a number of enthusiastic users of XML, UNIX and Java technology. Furthermore, 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 handing one document at a time.
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.
The HSSF library currently requires a full object representation to be created before reading values. This results in very high memory utilization. We need to reduce this substantially for reading. It would be preferable to do this for writing, but it may not be possible due to the constraints imposed by the file format itself. Memory utilization during read is our top user complaint.
The POIFS library currently requires a full object representation to be created before reading values. This results in very high memory utilization. We need to reduce this substantially for reading.
The HSSF library currently ignores formula cells and identifies them as "UnknownRecord" at the lower level of the API. We must provide a way to read and write formulas. This is now the top requested feature.
The HSSF library currently does not support charts. This is a key requirement of some users who wish to use HSSF in a reporting engine.
The HSSF Serializer currently does not provide serialization for cell styling. User's will want stylish spreadsheets to result from their XML.
There is currently no way to generate the XML from an XLS that is consistent with the format used by the HSSF Serializer.
There should be a way to read and write the DOC file format using pure Java.
The produced code shall be licensed by the Apache License as used by the Cocoon 2 project (APL 1.1) and maintained on at http://poi.sourceforge.net and http://sourcefoge.net/projects/poi. It is our hope to at some point integrate with the various Apache projects (xml.apache.org and jakarta.apache.org), at which point we'd turn the copyright over to them.
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 and Word file formats and the tools for writing to those file formats from Java, but also to provide the tools for later projects to convert other OLE 2 Compound Document formats to pure Java APIs.
HSSF Serializer for Apache Cocoon 2
Benefit | Supporting Features |
---|---|
Ability to serialize styles from XML spreadsheets. | HSSFSerialzier will support styles. |
Ability to read and write formulas in XLS files. | HSSF will support reading/writing formulas. |
Ability to output in MS Word on any platform using Java. | The project will develop an API that outputs in Word format using pure Java. |
Enhance performance for reading and writing XLS files. | HSSF will undergo a number of performance enhancements. HSSF will include a new event-based API for reading XLS files. POIFS will support a new event-based API for reading OLE2 CDF files. |
Ability to generate XML from XLS files | The project will develop an HSSF Generator. |
The ability to generate charts | HSSF will provide low level support for chart records as well as high level API support for generating charts. The ability to read chart information will not initially be provided. |
Enhancements to the POIFS API will include:
Enhancements to the HSSF API will include:
The HSSF Generator will include:
The HWPF API will include:
All Java code will be 100% pure Java.
The minimum system requirements for the POIFS API are:
The minimum system requirements for the the HSSF API are:
The minimum system requirements for the the HWPF API are:
The minimum system requirements for the HSSF Serializer are:
All components must perform well enough to be practical for use in a webserver environment (especially the "killer trio": Cocoon2/Tomcat/Apache combo)
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.
The filesystem as read and written by POI shall be fully documented and explained so that the average Java developer can understand it.
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.
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". Additionally, we are collaborating with the fine folks at OpenOffice.org on *free* documentation of the format.
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.
The HWPF API will be documented by javadoc. A walkthrough of using the high level HWPF API shall be provided. No documentation outside of the Javadoc shall be provided for the low level HWPF APIs.
The HSSF Serializer will be documented by javadoc.
The HSSF Generator will be documented by javadoc.
The XML tag language along with function and usage shall be fully documented. Examples will be provided as well.
filesystem shall refer only to the POI formatted archive.
file shall refer to the embedded data stream within a POI filesystem. This will be the actual embedded document.