+ See How to contribute to Poi. +
+ +
+ These are not necessarily deemed to be high enough quality to be included in the
+ core distribution, but they have been tested under contrib/
directory.
+
+ None as yet! - although you can expect that some of the links + listed below will eventually migrate to the "contributed components" level, and + then maybe even into the main distribution. +
+Submissions of modifications + to Poi which are awaiting review. Anyone can + comment on them on the dev mailing list - code reviewers are needed! + Use these at your own risk - although Poi has no guarantee + either, these patches have not been reviewed, let alone accepted. +
+The other extensions listed here are not endorsed by the Poi + project either - they are provided as a convenience only. They may or may not work, + they may or may not be open source, etc. +
+ +To have a link added to this table, see How to contribute + to POI.
+ +Name and Link | +Type | +Description | +Status | +Licensing | +Contact | +
---|
+ A number of people are using POI for a variety of purposes. As with + any new API or technology, the first question people generally ask + is not "how can I" but rather "Who else is doing what I'm about to + do?" This is understandable with the abismal success rate in the + software business. These case statements are meant to help create + confidence and understanding. +
++ We are actively seeking case studies for this page (after all it + just started). Andy Oliver (acoliver at apache dot org) has + agreed to have a few T-Shirts printed with the POI logo (once its + chosen) for the first + few best submissions. To submit a case study, either + + submit a patch for this page (preferred) or email it to the + mailing list + . +
++ Edwards and Kelcey Technology (http://www.ekcorp.com/) developed a + Facility + Managament and Maintenance System for the Telecommunications industry + based + on Turbine and Velocity. Originally the invoicing was done with a simple + CVS + sheet which was then marked up by accounts and customized for each client. + As growth has been consistent with the application, the requirement for + invoices that need not be touched by hand increased. POI provided the + solution to this issue, integrating easily and transparently into the + system. POI HSSF was used to create the invoices directly from the server + in + Excel 97 format and now services over 150 unique invoices per month. +
++ Cameron Riley (crileyNO@ SPAMekmail.com) +
++ Okay, here is a little code I used to determine if the cell was a number or + date, and then format appropriately. I hope it helps. I keep meaning to + submit a patch with the helper method below.... but just haven't had a + chance. +
+The POI project was dreamed up back around April 2001, when + Andy Oliver landed a short term contract to do Java-based + reporting to Excel. He'd done this project a few times before + and knew right where to look for the tools he needed. + Ironically, the API he used to use had skyrocketed from around + $300 ($US) to around $10K ($US). He figured it would take two + people around six months to write an Excel port so he + recommended the client fork out the $10K. +
+ +Around June 2001, Andy started thinking how great it would + be to have an open source Java tool to do this and, while he + had some spare time, he started on the project and learned + about OLE 2 Compound Document Format. After hitting some real + stumpers he realized he'd need help. He posted a message to + his local Java User's Group (JUG) and asked if anyone else + would be interested. He lucked out and the most talented Java + programmer he'd ever met, Marc Johnson, joined the project. He + ran rings around Andy at porting OLE 2 CDF and rewrote his + skeletal code into a more sophisticated library. It took Marc + a few iterations to get something they were happy with. +
+ +While Marc worked on that, Andy ported XLS to Java, based + on Marc's library. Several users wrote in asking to read XLS + (not just write as had originally been planned) and one user + had special requests for a different use for POIFS. Before + long, the project scope had tripled. POI 1.0 was released a + month later than planned, but with far more features. Marc + quickly wrote the serializer framework and HSSF Serializer in + record time and Andy banged out more documentation and worked + on making people aware of the project +
+ +Shortly before the release, POI was fortunate to come into + contact with Nicola -Ken- Barrozzi who gave them samples for + the HSSF Serializer and help uncover its unfortunate bugs + (which were promptly fixed). More recently, Ken ported most + of the POI project documentation to XML from Andy's crappy + HTML docs he wrote with Star Office. +
+ +Around the same time as the release, Glen Stampoultzis +joined the project. Glen was ticked off at Andy's flippant attitude +towards adding graphing to HSSF. Glen got so ticked off he decided to +grab a hammer and do it himself. Glen has already become an integral +part of the POI development community; his contributions to HSSF have +already started making waves. +
+ +Somewhere in there we decided to finally submit the project + to The Apache + Cocoon Project, only to discover the project had + outgrown fitting nicely into just Cocoon long ago. + Furthermore, Andy started eyeing other projects he'd like to + see POI functionality added to. So it was decided to donate + the Serializers and Generators to Cocoon, other POI + integration components to other projects, and the POI APIs + would become part of Jakarta. It was a bumpy road but it + looks like everything turned out since you're reading this! +
+ +First we'll tackle this from a project standpoint: Well, we + made an offer to Microsoft and Actuate (tongue in cheek + ... well mostly) that we'd quit the project and retire if + they'd simply write us each a really large check. I've yet to + get a phone call or email so I'm assuming they're not going to + pay us to go away. +
+Next, we've got some work to do here at Jakarta to finish + integrating POI into the community. Furthermore, we're + still transitioning the Serializer to Cocoon. +
+HSSF, during the 2.0 cycle, will undergo a few + optimizations. We'll also be adding new features like a full + implementation of Formulas and custom text formats. We're + hoping to be able to generate smaller files by adding + write-support for RK, MulRK and MulBlank records. I'm also + going to work on a Cocoon 2 Generator. Currently, reading is + not very efficient in HSSF. This is mainly because in order to + write or modify, one needs to be able to update upstream + pointers to downstream data. To do this you have to have + everything between in memory. A Generator would allow SAX + events to be processed instead. (This will be based on the low + level structures). One of the great things about this is that, + you'll not only have a more efficient way to read the file, + you'll have a great way to use spreadsheets as XML data + sources. +
+The HSSF Serializer, will further separate into a general + framework for creating serializers for other formats and the + HSSF Serializer specific implementation. (This is largely + already true). We'll also be adding support for features + already supported by HSSF (styles, fonts, text formats). We're + hoping to add support for formulas during this cycle. +
+We're beginning to expand our scope yet again. If we could + do all of this for XLS files, what about Doc files or PPT + files? We're thinking that our next component (HDF - Horrible + Document Format) should follow the same pattern. We're hoping + that new blood will join the team and allow us to tackle this + even faster (in part because POIFS is already finished). But + maybe what we need most is you!
++ Entries for the POI logo contest are now finished. Time to begin voting. Remember, Andy really + likes Tiki gods, but Glen suggests voting for what you like. :-) +
++ Vote here now!!! +
++ Click here to see the current results. +
++ The POI project consists of APIs for manipulating various file formats + based upon Microsoft's OLE 2 Compound Document format using pure Java. +
++ OLE 2 Compound Document Format based files include most Microsoft Office + files such as XLS and DOC. +
++ As a general policy we try to collaborate as much as possible with other projects to + provide this functionality. Examples include: Cocoon for + which you'll soon find generators and serializers for our projects; + Open Office.org with whom we collaborate in documenting the + XLS format; and Lucene for which we'll soon have file + format interpretors. When practical, we donate components directly to those projects for POI-enabling them. +
++ We'll tackle this on a component level. POI refers to the whole project. +
++ So why should you use POIFS or HSSF? +
++ You'd use POIFS if you had a document written in OLE 2 Compound Document Format, probably written using + MFC, that you needed to read in Java. Alternatively, you'd use POI to write OLE 2 Compound Document Format + if you needed to inter-operate with software running on the Windows platform. We are not just bragging when + we say that POIFS is the most complete and correct port of this file format to date! +
++ You'd use HSSF if you needed to read or write an XLS (Excel) file using Java. You can also read and modify + spreadsheets using this API, although right now writing is more mature. +
++ POI stands for Poor Obfuscation Implementation. Why would we name our project such a derogatory name? Well, + Microsoft's OLE 2 Compound Document Format is a poorly conceived thing. It is essentially an archive structured + much like the old DOS FAT filesystem. Redmond chose, instead of using tar, gzip, zip or arc, to invent their own + archive format that does not provide any standard encryption or compression, is not very appendable and is prone + to fragmentation. +
++ Poi is also a Hawaiian delicacy that Merriam Webster's dictionary defines as: + "A Hawaiian food of taro root cooked, pounded, and kneaded to a paste and often allowed to ferment." This seemed + strangely descriptive of the file format. +
++ So if you like acronyms, then POI is an acronym. If you hate them, then we just used the name of the food for our + project. If you wish to signify your love or hate for acronyms, use POI or Poi to refer to the project respectively. +
+A common misconception is that POI writes Excel files. POI is the name of the project. POI contains several + components, one of which, HSSF, writes Excel files. The following are components of the entire POI project + and a brief summary of their purpose.
+POIFS is the oldest and most stable part of the project. It is our port of the OLE 2 Compound Document Format to + pure Java. It supports both read and write functionality. All of our components ultimately rely on it by + definition. Please see the POIFS project page for more information.
+HSSF is our port of the Microsoft Excel 97(-2002) file format (BIFF8) to pure Java. It supports read and write + capability. Please see the HSSF project page for more information.
+HDF is our port of the Microsoft Word 97 file format to pure Java. It supports read and write capability. + Please see the HDF project page for more information. This component is + in the early stages of design. Jump in!
+HPSF is our port of the OLE 2 property set format to pure + Java. Property sets are mostly use to store a document's properties + (title, author, date of last modification etc.), but they can be used + for application-specific purposes as well. Currently HPSF supports + read functionality only. Please see the HPSF project page for more + information.
+The HSSF Serializer, which was part of our 1.0 release and last builds on + Sourceforge, has been donated to the + Cocoon project, and is available starting from version + 2.0.2.
++ So you'd like to contribute to the project? Great! We need enthusiastic, hard-working, talented folks to help + us on the project in several areas. The first is bug reports and feature requests! The second is documentation - + we'll be at your every beck and call if you've got a critique or you'd like to contribute or otherwise improve + the documentation. We could especially use some help documenting the HSSF file format! Last, but not least, we + could use some binary crunching Java coders to chew through the convolution that characterizes Microsoft's file + formats and help us port new ones to a superior Java platform! +
+So if you're motivated, ready, and have the time, join the mail lists and we'll be happy to help you get started on the + project! +
+ + ++ These are articles/etc. posted about POI around the web. If you + see POI in the news or mentioned at least somewhat prominently + on a site (not your homepage that you put the work POI on in + order to get us to link you and by the why here is a picture of + your wife in kids) then send a patch to the list. In general + equal time will be given so please feel free to send inflamatory + defamation as well as favorable, technical and factual. Really + stupid things won't be mentioned (sorry). +
++ If you can read one of these languages, send mail to the list + telling us what language it is and we'll categorize it! +
+The POI project is the master project for developing pure + Java ports of file formats based on Microsoft's OLE 2 Compound + Document Format. OLE 2 Compound Document Format is used by + Microsoft Office Documents, as well as by programs using MFC + property sets to serialize their document objects. +
++ There following are ports, packages or components contained in the POI project. +
++ POIFS is the set of APIs + for reading and writing OLE 2 Compound Document Formats using (only) Java. +
++ HSSF is the set of APIs + for reading and writing Microsoft Excel 97(-XP) spreadsheet using (only) Java. +
++ HDF is the set of APIs + for reading and writing Microsoft Word 97(-XP) spreadsheet using (only) Java. +
++ HPSF is the set of APIs + for reading property sets using (only) Java. +
++ POI-Utils are general purpose artifacts + from POI development that have not yet been implemented elsewhere. We're + always looking to donate these and maintain them as part of a general library + used in another project. These are things we need to complete our mission but + are generally outside of it. +
+
+ This is an informal list - in chronological order -
+ of some of the noteworthy patches that have been posted
+ to the developers
mailing list.
+ These patches are not (yet) part of the Poi project, but need reviewing for possible
+ inclusion. This system was instituted because, due to the large volume of mail and
+ the lack of time of the committers, some patches tended to get forgotten about. This
+ queue does not guarantee that any patch will be reviewed within a reasonable time frame,
+ but it does at least make them easier to find!
+
Reviewers wanted! - If you have time to review and/or test these patches, + we would be grateful for your time. Please post comments to the dev mailing lists. +
+ Before submitting a patch, please read the page on
diff -u
format from CVSFollowing the above guidelines will facilitate your patch being reviewed + and applied efficiently.
[Under Construction] Archive links will be added later.
+ Please do not bother the patch submitters/authors without first reading the
+ relevant post(s) in the
Vapourware will not be listed.
id | Summary | Reviewer | Resolution | Status |
---|
See also additional list of patches to be added in
+ The Poi Project operates on a meritocracy: the more you do, the more + responsibility you will obtain. This page lists all of the people who have + gone the extra mile and are Committers. If you would like to get involved, + the first step is to join the mailing lists. +
+ ++ We ask that you please do not send us emails privately asking for support. + We are non-paid volunteers who help out with the project and we do not + necessarily have the time or energy to help people on an individual basis. + Instead, we have set up mailing lists which often contain hundreds of + individuals who will help answer detailed requests for help. The benefit of + using mailing lists over private communication is that it is a shared + resource where others can also learn from common mistakes and as a + community we all grow together. +
+ +