From 273f326617322c8a5e163df6e0fd8e7d8f2c416c Mon Sep 17 00:00:00 2001
From: Glen Stampoultzis This release of the how-to outlines functionality for 1.5.
- Those looking for information on the release edition should
- look in the poi-src for the release or at a
- previous edition in CVS tagged for that release.
- This release allows numeric and string cell values to be written to
- or read from an XLS file as well as reading and writing dates. Also
- in this release is row and column sizing, cell styling (bold,
- italics, borders,etc), and support for built-in data formats. New
- to this release is an event-based API for reading XLS files.
- It differs greatly from the read/write API
- and is intended for intermediate developers who need a smaller
- memory footprint. It will also serve as the basis for the HSSF
- Generator. This release is intended for developers, java-fanatics and the
-just generally all around impatient. HSSF has not yet been
-extensively tested in a high load multi-threaded situation. This
-release is not considered to be "golden" as it has new
-features that have not been extensively tested, and is an early 2.0
-build that could be restructured significantly in the future (not
-that there are necessarily plans to do so, just that you're better
-off basing your code on 1.0 and sticking with it if you don't need
-2.0 stuff bad enough to deal with us pulling the rug out from under
-you regularly). This release of the how-to outlines functionality for the 1.5 release.
+ Those looking for information on previous releases should
+ look in the documentation distributed with that release.
+ This release allows numeric and string cell values to be written to
+ or read from an XLS file as well as reading and writing dates. Also
+ in this release is row and column sizing, cell styling (bold,
+ italics, borders,etc), and support for built-in data formats. New
+ to this release is an event-based API for reading XLS files.
+ It differs greatly from the read/write API
+ and is intended for intermediate developers who need a smaller
+ memory footprint. It will also serve as the basis for the HSSF
+ Generator. The high level API (package: org.apache.poi.hssf.usermodel)
-is what most people should use. Usage is very simple.
- Workbooks are created by creating an instance of
-org.apache.poi.hssf.usermodel.HSSFWorkbook.
- Sheets are created by calling createSheet() from an existing
-instance of HSSFWorkbook, the created sheet is automatically added in
-sequence to the workbook. Sheets do not in themselves have a sheet
-name (the tab at the bottom); you set
-the name associated with a sheet by calling
-HSSFWorkbook.setSheetName(sheetindex,"SheetName"). Rows are created by calling createRow(rowNumber) from an existing
-instance of HSSFSheet. Only rows that have cell values should be
-added to the sheet. To set the row's height, you just call
-setRowHeight(height) on the row object. The height must be given in
-twips, or 1/20th of a point. If you prefer, there is also a
-setRowHeightInPoints method.
- Cells are created by calling createCell(column, type) from an
-existing HSSFRow. Only cells that have values should be added to the
-row. Cells should have their cell type set to either
-HSSFCell.CELL_TYPE_NUMERIC or HSSFCell.CELL_TYPE_STRING depending on
-whether they contain a numeric or textual value. Cells must also have
-a value set. Set the value by calling setCellValue with either a
-String or double as a parameter. Individual cells do not have a
-width; you must call setColumnWidth(colindex, width) (use units of
-1/256th of a character) on the HSSFSheet object. (You can't do it on
-an individual basis in the GUI either). Cells are styled with HSSFCellStyle objects which in turn contain
-a reference to an HSSFFont object. These are created via the
-HSSFWorkbook object by calling createCellStyle() and createFont().
-Once you create the object you must set its parameters (colors,
-borders, etc). To set a font for an HSSFCellStyle call
-setFont(fontobj).
- Once you have generated your workbook, you can write it out by
-calling write(outputStream) from your instance of Workbook, passing
-it an OutputStream (for instance, a FileOutputStream or
-ServletOutputStream). You must close the OutputStream yourself. HSSF
-does not close it for you.
- Here is some example code (excerpted and adapted from
-org.apache.poi.hssf.dev.HSSF test class): The high level API (package: org.apache.poi.hssf.usermodel)
+ is what most people should use. Usage is very simple.
+ Workbooks are created by creating an instance of
+ org.apache.poi.hssf.usermodel.HSSFWorkbook.
+ Sheets are created by calling createSheet() from an existing
+ instance of HSSFWorkbook, the created sheet is automatically added in
+ sequence to the workbook. Sheets do not in themselves have a sheet
+ name (the tab at the bottom); you set
+ the name associated with a sheet by calling
+ HSSFWorkbook.setSheetName(sheetindex,"SheetName"). Rows are created by calling createRow(rowNumber) from an existing
+ instance of HSSFSheet. Only rows that have cell values should be
+ added to the sheet. To set the row's height, you just call
+ setRowHeight(height) on the row object. The height must be given in
+ twips, or 1/20th of a point. If you prefer, there is also a
+ setRowHeightInPoints method.
+ Cells are created by calling createCell(column, type) from an
+ existing HSSFRow. Only cells that have values should be added to the
+ row. Cells should have their cell type set to either
+ HSSFCell.CELL_TYPE_NUMERIC or HSSFCell.CELL_TYPE_STRING depending on
+ whether they contain a numeric or textual value. Cells must also have
+ a value set. Set the value by calling setCellValue with either a
+ String or double as a parameter. Individual cells do not have a
+ width; you must call setColumnWidth(colindex, width) (use units of
+ 1/256th of a character) on the HSSFSheet object. (You can't do it on
+ an individual basis in the GUI either). Cells are styled with HSSFCellStyle objects which in turn contain
+ a reference to an HSSFFont object. These are created via the
+ HSSFWorkbook object by calling createCellStyle() and createFont().
+ Once you create the object you must set its parameters (colors,
+ borders, etc). To set a font for an HSSFCellStyle call
+ setFont(fontobj).
+ Once you have generated your workbook, you can write it out by
+ calling write(outputStream) from your instance of Workbook, passing
+ it an OutputStream (for instance, a FileOutputStream or
+ ServletOutputStream). You must close the OutputStream yourself. HSSF
+ does not close it for you.
+ Here is some example code (excerpted and adapted from
+ org.apache.poi.hssf.dev.HSSF test class): The event API is brand new. It is intended for intermediate
-developers who are willing to learn a little bit of the low level API
-structures. Its relatively simple to use, but requires a basic
-understanding of the parts of an Excel file (or willingness to
-learn). The advantage provided is that you can read an XLS with a
-relatively small memory footprint.
- To use this API you construct an instance of
-org.apache.poi.hssf.eventmodel.HSSFRequest. Register a class you
-create that supports the
-org.apache.poi.hssf.eventmodel.HSSFListener interface using the
-HSSFRequest.addListener(yourlistener, recordsid). The recordsid
-should be a static reference number (such as BOFRecord.sid) contained
-in the classes in org.apache.poi.hssf.record. The trick is you
-have to know what these records are. Alternatively you can call
-HSSFRequest.addListenerForAllRecords(mylistener). In order to learn
-about these records you can either read all of the javadoc in the
-org.apache.poi.hssf.record package or you can just hack up a
-copy of org.apache.poi.hssf.dev.EFHSSF and adapt it to your
-needs. TODO: better documentation on records. Once you've registered your listeners in the HSSFRequest object
-you can construct an instance of
-org.apache.poi.poifs.filesystem.FileSystem (see POIFS howto) and
-pass it your XLS file inputstream. You can either pass this, along
-with the request you constructed, to an instance of HSSFEventFactory
-via the HSSFEventFactory.processWorkbookEvents(request, Filesystem)
-method, or you can get an instance of DocumentInputStream from
-Filesystem.createDocumentInputStream("Workbook") and pass
-it to HSSFEventFactory.processEvents(request, inputStream). Once you
-make this call, the listeners that you constructed receive calls to
-their processRecord(Record) methods with each Record they are
-registered to listen for until the file has been completely read.
- A code excerpt from org.apache.poi.hssf.dev.EFHSSF (which is
-in CVS or the source distribution) is reprinted below with excessive
-comments: The event API is brand new. It is intended for intermediate
+ developers who are willing to learn a little bit of the low level API
+ structures. Its relatively simple to use, but requires a basic
+ understanding of the parts of an Excel file (or willingness to
+ learn). The advantage provided is that you can read an XLS with a
+ relatively small memory footprint.
+ To use this API you construct an instance of
+ org.apache.poi.hssf.eventmodel.HSSFRequest. Register a class you
+ create that supports the
+ org.apache.poi.hssf.eventmodel.HSSFListener interface using the
+ HSSFRequest.addListener(yourlistener, recordsid). The recordsid
+ should be a static reference number (such as BOFRecord.sid) contained
+ in the classes in org.apache.poi.hssf.record. The trick is you
+ have to know what these records are. Alternatively you can call
+ HSSFRequest.addListenerForAllRecords(mylistener). In order to learn
+ about these records you can either read all of the javadoc in the
+ org.apache.poi.hssf.record package or you can just hack up a
+ copy of org.apache.poi.hssf.dev.EFHSSF and adapt it to your
+ needs. TODO: better documentation on records. Once you've registered your listeners in the HSSFRequest object
+ you can construct an instance of
+ org.apache.poi.poifs.filesystem.FileSystem (see POIFS howto) and
+ pass it your XLS file inputstream. You can either pass this, along
+ with the request you constructed, to an instance of HSSFEventFactory
+ via the HSSFEventFactory.processWorkbookEvents(request, Filesystem)
+ method, or you can get an instance of DocumentInputStream from
+ Filesystem.createDocumentInputStream("Workbook") and pass
+ it to HSSFEventFactory.processEvents(request, inputStream). Once you
+ make this call, the listeners that you constructed receive calls to
+ their processRecord(Record) methods with each Record they are
+ registered to listen for until the file has been completely read.
+ A code excerpt from org.apache.poi.hssf.dev.EFHSSF (which is
+ in CVS or the source distribution) is reprinted below with excessive
+ comments:
The first is "biffview". To do this you run it (assumes you have everything setup in your classpath and that you know what @@ -477,11 +465,11 @@ their data and a list of not-yet-understood records with no data (because it doesn't know how to interpret them). This listing is useful for several things. First, you can look at the values and SEE what is wrong in quasi-English. Second, you can send the output to a -file and compare it. +file and compare it.
The second function is "big freakin dump", just pass a file and a second argument matching "bfd" exactly. This -will just make a big hexdump of the file. +will just make a big hexdump of the file.
Lastly, there is "mixed" mode which does the same as regular biffview, only it includes hex dumps of certain records @@ -511,7 +499,7 @@ more user feedback on what is most useful first we'll aim for that. As a general principal, HSSF's goal is to support HSSF-Serializer (meaning an emphasis on write). We would like to hear from you! How are you using HSSF/POIFS? How would you like to use it? What features -are most important first? +are most important first?