diff --git a/build/jakarta-poi/docs/changes.html b/build/jakarta-poi/docs/changes.html index a4445ad4b..2f3a0c53d 100644 --- a/build/jakarta-poi/docs/changes.html +++ b/build/jakarta-poi/docs/changes.html @@ -45,7 +45,7 @@
Future
-Download +Download
1.0 Vision
@@ -55,6 +55,8 @@
Changes
+FAQ +

Sub-Projects
@@ -129,23 +131,272 @@
- + + +
1.5-dev (March 22 2002) 1.5-dev (03-April-2002)

- +
  • - - New project build. - (NKB)
  • - +New project build.(NKB) +
  • - - New project documentation system based on Cocoon. - (NKB)
  • - +New project documentation system based on Cocoon.(NKB) + +
  • +Package rename(POI-DEVELOPERS)
  • + +
  • +Various bug fixes(POI-DEVELOPERS)
  • + +
  • +Early stages of HSF development (not ready for development)(POI-DEVELOPERS)
  • + +
  • +Initial low level record support for charting (not complete)(POI-DEVELOPERS)
  • + +
    +
    +
    +
    +
    + + + + + + + +
    1.1.0 ()
    +
    + + +
  • +Created new event model(POI-DEVELOPERS)
  • + +
  • +Optimizations made to HSSF including aggregate records for + values, rows, etc.(POI-DEVELOPERS)
  • + +
  • +predictive sizing, offset based writing (instead of lots of + array copies)(POI-DEVELOPERS)
  • + +
  • +minor re-factoring and bug fixes.(POI-DEVELOPERS)
  • + +
    +
    +
    +
    +
    + + + + + + + +
    1.0.0 (???)
    +
    + + +
  • +Minor documentation updates.(POI-DEVELOPERS)
  • + +
    +
    +
    +
    +
    + + + + + + + +
    0.14.0 (???)
    +
    + + +
  • +Added DataFormat helper class and exposed set and get format + on HSSFCellStyle(POI-DEVELOPERS)
  • + +
  • +Fixed column width apis (unit wise) and various javadoc on + the subject(POI-DEVELOPERS)
  • + +
  • +Fix for Dimensions record (again)... (one of these days I'll + write a unit test for this ;-p).(POI-DEVELOPERS)
  • + +
  • +Some optimization on sheet creation.(POI-DEVELOPERS)
  • + +
    +
    +
    +
    +
    + + + + + + + +
    0.13.0 (???)
    +
    + + + + +
    +
    +
    +
    + + + + + + + +
    0.12.0 (???)
    +
    + + +
  • +Added MulBlank, Blank, ColInfo(POI-DEVELOPERS)
  • + +
  • +Added log4j facility and removed all sys.out type logging(POI-DEVELOPERS)
  • + +
  • +Added support for adding font's, styles and corresponding + high level api for styling cells(POI-DEVELOPERS)
  • + +
  • +added support for changing row height, cell width and default + row height/cell width.(POI-DEVELOPERS)
  • + +
  • +Added fixes for internationalization (UTF-16 should work now + from HSSFCell.setStringValue, etc when the encoding is set)(POI-DEVELOPERS)
  • + +
  • +added support for adding/removing and naming sheets.(POI-DEVELOPERS)
  • + +
    +
    +
    +
    +
    + + + + + + + +
    0.11.0 (???)
    +
    + + +
  • +Bugfix release. We were throwing an exception when reading + RKRecord objects.(POI-DEVELOPERS)
  • + +
    +
    +
    +
    +
    + + + + + + + +
    0.10.0 (???)
    +
    + + +
  • +Got continuation records to work (read/write)(POI-DEVELOPERS)
  • + +
  • +Added various pre-support for formulas(POI-DEVELOPERS)
  • + +
  • +Massive API reorganization, repackaging.(POI-DEVELOPERS)
  • + +
  • +BiffViewer class added for validating HSSF & POI and/or + HSSF Output.(POI-DEVELOPERS)
  • + +
  • +Better API support for modification.(POI-DEVELOPERS)
  • + +
    +
    +
    +
    +
    + + + + + + + +
    0.7 (and interim releases) (???)
    +
    + + +
  • +Added encoding flag to high and low level api to use utf-16 + when needed (HSSFCell.setEncoding())(POI-DEVELOPERS)
  • + +
  • +added read only support for Label records (which are + reinterpreted as LabelSST when written)(POI-DEVELOPERS)
  • + +
  • +Broken continuation record implementation (oops)(POI-DEVELOPERS)
  • + +
  • +BiffViewer class added for validating HSSF & POI and/or + HSSF Output.(POI-DEVELOPERS)
  • + +
    +
    +
    +
    +
    + + + + + + diff --git a/build/jakarta-poi/docs/contrib.html b/build/jakarta-poi/docs/contrib.html index 01e01ef93..a71f5ddc7 100644 --- a/build/jakarta-poi/docs/contrib.html +++ b/build/jakarta-poi/docs/contrib.html @@ -45,7 +45,7 @@
    Future
    -Download +Download
    1.0 Vision
    @@ -55,6 +55,8 @@
    Changes
    +FAQ +

    Sub-Projects
    diff --git a/build/jakarta-poi/docs/faq.html b/build/jakarta-poi/docs/faq.html index 12329d4ce..5a45e2d2a 100644 --- a/build/jakarta-poi/docs/faq.html +++ b/build/jakarta-poi/docs/faq.html @@ -45,7 +45,7 @@
    Future
    -Download +Download
    1.0 Vision
    @@ -55,6 +55,8 @@
    Changes
    +FAQ +

    Sub-Projects
    @@ -140,6 +142,11 @@ What is the HSSF "eventmodel"? +
  • + + Why can't read the document I created using Star Office 5.1? + +
  • @@ -167,7 +174,6 @@
    -

    The HSSF eventmodel package is a new API for reading XLS files more efficiently. It does @@ -175,12 +181,31 @@ tenfold. It is based on the AWT event model in combination with SAX. If you need read-only access to a given XLS file, this is the best way to do it.

    - + + + + +
    0.6 (release) (???)
    +
    + + +
  • +Support for read/write and modify.(POI-DEVELOPERS)
  • + +
  • +Read only support for MulRK records (converted to Number when + writing) + (POI-DEVELOPERS)
  • +
    +
    +
    + +
    + + + + + +
    + Why can't read the document I created using Star Office 5.1? +
    +
    +

    - Soon, very soon. + Star Office 5.1 writes some records using the older BIFF standard. This causes some problems + with POI which supports only BIFF8.

    diff --git a/build/jakarta-poi/docs/historyandfuture.html b/build/jakarta-poi/docs/historyandfuture.html index bd558a4c1..fca0fe3d2 100644 --- a/build/jakarta-poi/docs/historyandfuture.html +++ b/build/jakarta-poi/docs/historyandfuture.html @@ -45,7 +45,7 @@
    Future
    -Download +Download
    1.0 Vision
    @@ -55,6 +55,8 @@
    Changes
    +FAQ +

    Sub-Projects
    diff --git a/build/jakarta-poi/docs/hssf/diagram1.html b/build/jakarta-poi/docs/hssf/diagram1.html index f2350f0f0..1e342014d 100644 --- a/build/jakarta-poi/docs/hssf/diagram1.html +++ b/build/jakarta-poi/docs/hssf/diagram1.html @@ -44,12 +44,16 @@
    HSSF
    +Quick Guide +
    HOWTO
    Use Case
    Pictorial Docs
    +Alternatives +

    Contributer's Guide
    diff --git a/build/jakarta-poi/docs/hssf/diagrams.html b/build/jakarta-poi/docs/hssf/diagrams.html index 8e72bc02a..a4fe26df2 100644 --- a/build/jakarta-poi/docs/hssf/diagrams.html +++ b/build/jakarta-poi/docs/hssf/diagrams.html @@ -44,12 +44,16 @@
    HSSF
    +Quick Guide +
    HOWTO
    Use Case
    Pictorial Docs
    +Alternatives +

    Contributer's Guide
    @@ -112,7 +116,7 @@

    - Have more? Add a new "bug" to the bug database with [DOCUMENTATION] + Have more? Add a new "bug" to the bug database with [DOCUMENTATION] prefacing the description and a link to the file on an http server somewhere. If you don't have your own webserver, then you can email it to (acoliver at apache dot org) provided its < 5MB. Diagrams should be diff --git a/build/jakarta-poi/docs/hssf/how-to.html b/build/jakarta-poi/docs/hssf/how-to.html index 7d0b89085..37ffa9f76 100644 --- a/build/jakarta-poi/docs/hssf/how-to.html +++ b/build/jakarta-poi/docs/hssf/how-to.html @@ -44,12 +44,16 @@
    HSSF
    +Quick Guide +
    HOWTO
    Use Case
    Pictorial Docs
    +Alternatives +

    Contributer's Guide
    @@ -97,30 +101,6 @@
    -

    - - - - - - - -
    Recent revision history
    -
    - -
      - -
    • 12.30.2001 - revised for poi 1.0-final - minor revisions
    • - -
    • 01.03.2001 - revised for poi 1.1-devel
    • - -
    - -
    -
    -
    - -
    @@ -130,17 +110,18 @@ @@ -800,7 +783,7 @@ matching "on" exactly.

    In the next release cycle we'll also have something called a FormulaViewer. The class is already there, but its not very useful -yet. When it does something, I'll document it.

    +yet. When it does something, we'll document it.

    @@ -839,300 +822,14 @@ As a general principal, HSSF's goal is to support HSSF-Serializer are you using HSSF/POIFS? How would you like to use it? What features are most important first?

    - -

    This release is near feature freeze for the 1.0-beta. All -priorities refer to things we'll be adding in the next release -(probably 2.0). The 1.0-beta is scheduled for release in the mid to -late December timeframe. While it's way to early to say when the -2.0-beta will be released, my "gut" feeling is to aim for -around March and have at least the first three items.

    - -

    Current list of priorities:

    - -
      - -
    1. Helper class for fonts, etc.
    2. - -
    3. Add Formulas.
    4. - -
    5. Implement more record types (for other things ... not sure - what this will mean yet).
    6. - -
    7. Add more dummy checks (for when API user's do things they - "can't" do)
    8. - -
    9. Add support for embedded graphics and stuff like that.
    10. - -
    11. Create new adapter object for handling MulBlank, MulRk, Rk - records.
    12. - -

    -

    This release of the how-to outlines functionality included in a - development build of HSSF. Those looking for information on the - release edition should look in the poi-src for the release or at a +

    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. 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 + 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.

    @@ -215,10 +196,8 @@ 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. In this release there will always be at -least three sheets generated regardless of whether you have three -sheets. More than three sheets is probably not supported. Sheets do -not in themselves have a sheet name (the tab at the bottom); you set +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").

    @@ -263,36 +242,38 @@ org.apache.poi.hssf.dev.HSSF test class):

    @@ -498,118 +483,95 @@ comments:

    -
            // create a new file
    -        FileOutputStream out    = new FileOutputStream("/home/me/myfile.xls");
    +
            short rownum;
    +
    +        // create a new file
    +        FileOutputStream out = new FileOutputStream("workbook.xls");
             // create a new workbook
    -        HSSFWorkbook     wb     = new HSSFWorkbook();
    +        HSSFWorkbook wb = new HSSFWorkbook();
             // create a new sheet
    -        HSSFSheet        s      = wb.createSheet();
    +        HSSFSheet s = wb.createSheet();
             // declare a row object reference
    -        HSSFRow          r      = null;
    +        HSSFRow r = null;
             // declare a cell object reference
    -        HSSFCell         c      = null;
    +        HSSFCell c = null;
             // create 3 cell styles
    -        HSSFCellStyle    cs     = wb.createCellStyle();
    -        HSSFCellStyle    cs2    = wb.createCellStyle();
    -        HSSFCellStyle    cs3    = wb.createCellStyle();
    +        HSSFCellStyle cs = wb.createCellStyle();
    +        HSSFCellStyle cs2 = wb.createCellStyle();
    +        HSSFCellStyle cs3 = wb.createCellStyle();
             // create 2 fonts objects
    -        HSSFFont         f      = wb.createFont();
    -        HSSFFont         f2     = wb.createFont();
    +        HSSFFont f = wb.createFont();
    +        HSSFFont f2 = wb.createFont();
     
             //set font 1 to 12 point type
    -        f.setFontHeightInPoints((short)12);
    +        f.setFontHeightInPoints((short) 12);
             //make it red
    -        f.setColor((short)0xA);
    +        f.setColor((short) HSSFCellStyle.RED);
             // make it bold
             //arial is the default font
             f.setBoldweight(f.BOLDWEIGHT_BOLD);
     
             //set font 2 to 10 point type
    -        f2.setFontHeightInPoints((short)10);
    +        f2.setFontHeightInPoints((short) 10);
             //make it the color at palette index 0xf (white)
    -        f2.setColor((short)0xf);
    +        f2.setColor((short) HSSFCellStyle.WHITE);
             //make it bold
             f2.setBoldweight(f2.BOLDWEIGHT_BOLD);
     
    @@ -304,53 +285,56 @@ org.apache.poi.hssf.dev.HSSF test class):

    //set a thin border cs2.setBorderBottom(cs2.BORDER_THIN); //fill w fg fill color - cs2.setFillPattern((short)1); + cs2.setFillPattern((short) HSSFCellStyle.SOLID_FOREGROUND); // set foreground fill to red - cs2.setFillForegroundColor((short)0xA); + cs2.setFillForegroundColor((short) HSSFCellStyle.RED); // set the font cs2.setFont(f2); // set the sheet name to HSSF Test - wb.setSheetName(0,"HSSF Test"); + wb.setSheetName(0, "HSSF Test"); // create a sheet with 300 rows (0-299) - for (rownum = (short)0; rownum < 300; rownum++) + for (rownum = (short) 0; rownum < 300; rownum++) { // create a row r = s.createRow(rownum); // on every other row - if ( (rownum % 2) == 0) { + if ((rownum % 2) == 0) + { // make the row height bigger (in twips - 1/20 of a point) - r.setHeight((short)0x249); + r.setHeight((short) 0x249); } //r.setRowNum(( short ) rownum); // create 50 cells (0-49) (the += 2 becomes apparent later - for (short cellnum = (short)0; cellnum < 50; cellnum += 2) + for (short cellnum = (short) 0; cellnum < 50; cellnum += 2) { // create a numeric cell - c = r.createCell(cellnum,HSSFCell.CELL_TYPE_NUMERIC); + c = r.createCell(cellnum); // do some goofy math to demonstrate decimals c.setCellValue(rownum * 10000 + cellnum - + ((( double ) rownum / 1000) - + (( double ) cellnum / 10000))); + + (((double) rownum / 1000) + + ((double) cellnum / 10000))); // on every other row - if ( (rownum % 2) == 0) { + if ((rownum % 2) == 0) + { // set this cell to the first cell style we defined c.setCellStyle(cs); } // create a string cell (see why += 2 in the - c = r.createCell((short)(cellnum+1),HSSFCell.CELL_TYPE_STRING); + c = r.createCell((short) (cellnum + 1)); // set the cell's string value to "TEST" c.setCellValue("TEST"); // make this column a bit wider - s.setColumnWidth((short)(cellnum+1), (short)((50*8) / ((double)1/20)) ); + s.setColumnWidth((short) (cellnum + 1), (short) ((50 * 8) / ((double) 1 / 20))); // on every other row - if ( (rownum % 2) == 0) { + if ((rownum % 2) == 0) + { // set this to the white on red cell style // we defined above c.setCellStyle(cs2); @@ -371,9 +355,10 @@ org.apache.poi.hssf.dev.HSSF test class):

    cs3.setBorderBottom(cs3.BORDER_THICK); //create 50 cells - for (short cellnum = (short)0; cellnum < 50; cellnum++) { + for (short cellnum = (short) 0; cellnum < 50; cellnum++) + { //create a blank type cell (no value) - c = r.createCell(cellnum,HSSFCell.CELL_TYPE_BLANK); + c = r.createCell(cellnum); // set it to the thick black border style c.setCellStyle(cs3); } @@ -384,7 +369,7 @@ org.apache.poi.hssf.dev.HSSF test class):

    // demonstrate adding/naming and deleting a sheet // create a sheet, set its title then delete it s = wb.createSheet(); - wb.setSheetName(1,"DeletedSheet"); + wb.setSheetName(1, "DeletedSheet"); wb.removeSheetAt(1); //end deleted sheet @@ -430,7 +415,7 @@ would if creating a new xls. When you are done modifying cells just call workbook.write(outputstream) just as you did above.

    An example of this can be seen in -org.apache.poi.hssf.dev.HSSF.

    +org.apache.poi.hssf.dev.HSSF.

    -//this non-public class implements the required interface
    -// we construct it with a copy of its container class...this is cheap but effective
    -class EFHSSFListener implements HSSFListener {
    -    EFHSSF efhssf;
    -    public EFHSSFListener(EFHSSF efhssf) {
    -        this.efhssf = efhssf;
    +/**
    + * This example shows how to use the event API for reading a file.
    + */
    +public class EventExample
    +        implements HSSFListener
    +{
    +    private SSTRecord sstrec;
    +
    +    /**
    +     * This method listens for incoming records and handles them as required.
    +     * @param record    The record that was found while reading.
    +     */
    +    public void processRecord(Record record)
    +    {
    +        switch (record.getSid())
    +        {
    +            // the BOFRecord can represent either the beginning of a sheet or the workbook
    +            case BOFRecord.sid:
    +                BOFRecord bof = (BOFRecord) record;
    +                if (bof.getType() == bof.TYPE_WORKBOOK)
    +                {
    +                    System.out.println("Encountered workbook");
    +                    // assigned to the class level member
    +                } else if (bof.getType() == bof.TYPE_WORKSHEET)
    +                {
    +                    System.out.println("Encountered sheet reference");
    +                }
    +                break;
    +            case BoundSheetRecord.sid:
    +                BoundSheetRecord bsr = (BoundSheetRecord) record;
    +                System.out.println("New sheet named: " + bsr.getSheetname());
    +                break;
    +            case RowRecord.sid:
    +                RowRecord rowrec = (RowRecord) record;
    +                System.out.println("Row found, first column at "
    +                        + rowrec.getFirstCol() + " last column at " + rowrec.getLastCol());
    +                break;
    +            case NumberRecord.sid:
    +                NumberRecord numrec = (NumberRecord) record;
    +                System.out.println("Cell found with value " + numrec.getValue()
    +                        + " at row " + numrec.getRow() + " and column " + numrec.getColumn());
    +                break;
    +                // SSTRecords store a array of unique strings used in Excel.
    +            case SSTRecord.sid:
    +                sstrec = (SSTRecord) record;
    +                for (int k = 0; k < sstrec.getNumUniqueStrings(); k++)
    +                {
    +                    System.out.println("String table value " + k + " = " + sstrec.getString(k));
    +                }
    +                break;
    +            case LabelSSTRecord.sid:
    +                LabelSSTRecord lrec = (LabelSSTRecord) record;
    +                System.out.println("String cell found with value "
    +                        + sstrec.getString(lrec.getSSTIndex()));
    +                break;
    +        }
         }
     
    -    // we just use this as an adapter so we pass the record to the method in the container class
    -    public void processRecord(Record record) {
    -        efhssf.recordHandler(record);
    -    }
    -}
    -
    -     //here is an excerpt of the main line execution code from EFHSSF
    -    public void run() throws IOException {
    +    /**
    +     * Read an excel file and spit out what we find.
    +     *
    +     * @param args      Expect one argument that is the file to read.
    +     * @throws IOException  When there is an error processing the file.
    +     */
    +    public static void main(String[] args) throws IOException
    +    {
             // create a new file input stream with the input file specified
             // at the command line
    -        FileInputStream fin = new FileInputStream(infile);
    +        FileInputStream fin = new FileInputStream(args[0]);
             // create a new org.apache.poi.poifs.filesystem.Filesystem
    -        Filesystem poifs = new Filesystem(fin);
    +        POIFSFileSystem poifs = new POIFSFileSystem(fin);
             // get the Workbook (excel part) stream in a InputStream
    -        InputStream din  = poifs.createDocumentInputStream("Workbook");
    +        InputStream din = poifs.createDocumentInputStream("Workbook");
             // construct out HSSFRequest object
             HSSFRequest req = new HSSFRequest();
             // lazy listen for ALL records with the listener shown above
    -        req.addListenerForAllRecords(new EFHSSFListener(this));
    +        req.addListenerForAllRecords(new EventExample());
             // create our event factory
             HSSFEventFactory factory = new HSSFEventFactory();
             // process our events based on the document input stream
    -        factory.processEvents(req,din);
    +        factory.processEvents(req, din);
             // once all the events are processed close our file input stream
             fin.close();
             // and our document input stream (don't want to leak these!)
             din.close();
    -        // create a new output stream from filename specified at the command line
    -        FileOutputStream fout = new FileOutputStream(outfile);
    -        // write the HSSFWorkbook (class member) we created out to the file.
    -        workbook.write(fout);
    -        // close our file output stream
    -        fout.close();
    -        // print done.  Go enjoy your copy of the file.
             System.out.println("done.");
         }
    -
    -
    -    //here is an excerpt of the recordHander called from our listener.
    -    // the record handler in the container class is intent on just rewriting the file
    -    public void recordHandler(Record record) {
    -        HSSFRow row = null;
    -        HSSFCell cell = null;
    -        int sheetnum = -1;
    -        switch (record.getSid()) {
    -            // the BOFRecord can represent either the beginning of a sheet or the workbook
    -            case BOFRecord.sid:
    -                BOFRecord bof = (BOFRecord) record;
    -                if (bof.getType() == bof.TYPE_WORKBOOK) {
    -                    //if its the workbook then create a new HSSFWorkbook
    -                    workbook = new HSSFWorkbook();
    -                // assigned to the class level member
    -                } else if (bof.getType() == bof.TYPE_WORKSHEET) {
    -                    sheetnum++;
    -                    // otherwise if its a sheet increment the sheetnum index
    -                    cursheet = workbook.getSheetAt(sheetnum);
    -                }
    -            break;
    -            // get the sheet at that index and assign it to method variable
    -            // cursheet (the sheet was created when the BoundSheetRecord record occurred
    -            case BoundSheetRecord.sid:
    -                // when we find a boundsheet record create a new sheet in the workbook and
    -                BoundSheetRecord bsr = (BoundSheetRecord) record;
    -                // assign it the name specified in this record.
    -                workbook.createSheet(bsr.getSheetname());
    -            break;
    -            // if this is a row record add the row to the current sheet
    -            case RowRecord.sid:
    -                RowRecord rowrec = (RowRecord) record;
    -                // assign our row the rownumber specified in the Row Record
    -                cursheet.createRow(rowrec.getRowNumber());
    -            break;
    -            // if this is a NumberRecord (RKRecord, MulRKRecord get converted to Number
    -            // records) then get the row specified in the number record from the current
    -            // sheet.  With this instance of HSSFRow create a new HSSFCell with the column
    -            // number specified in the record and assign it type NUMERIC
    -            case NumberRecord.sid:
    -                NumberRecord numrec = (NumberRecord) record;
    -                row = cursheet.getRow(numrec.getRow());
    -                cell = row.createCell(numrec.getColumn(),HSSFCell.CELL_TYPE_NUMERIC);
    -                // set the HSSFCell's value to the value stored in the NumberRecord
    -                cell.setCellValue(numrec.getValue());
    -            break;
    -            // if this is the SSTRecord (occurs once in the workbook) then add all of its
    -            // strings to our workbook.  We'll look them up later when we add LABELSST records.
    -            case SSTRecord.sid:
    -                SSTRecord sstrec = (SSTRecord) record;
    -                for (int k = 0; k < sstrec.getNumUniqueStrings(); k++) {
    -                    workbook.addSSTString(sstrec.getString(k));
    -                }
    -            break;
    -            // if this is a LabelSSTRecord then get the row specified in the LabelSSTRecord from
    -            // the current sheet.  With this instance of HSSFRow create a new HSSFCell with the
    -            // column nubmer specified in the record and set the type to type STRING.
    -            case LabelSSTRecord.sid:
    -                LabelSSTRecord lrec = (LabelSSTRecord) record;
    -                row = cursheet.getRow(lrec.getRow());
    -                cell = row.createCell(lrec.getColumn(),HSSFCell.CELL_TYPE_STRING);
    -                //set the cells value to the string in our workbook object (added in the case
    -                //above) at the index specified by the LabelSSTRecord.
    -                cell.setCellValue(workbook.getSSTString(lrec.getSSTIndex()));
    -            break;
    -        }
    -    }
    +} +
    @@ -683,15 +645,19 @@ export CLASSPATH=$CLASSPATH:$HSSFDIR/hssf.jar:$HSSFDIR/poi-poifs.jar:$HSSFDIR/po +

    +

    This should generate a test sheet in your home directory called "myxls.xls".

    • Type: - java org.apache.poi.hssf.dev.HSSF ~/input.xls output.xls + java org.apache.poi.hssf.dev.HSSF ~/input.xls output.xls + +

      This is the read/write/modify test. It reads in the spreadsheet, modifies a cell, and writes it back out. Failing this test is not necessarily a bad thing. If HSSF tries to modify a non-existant sheet then this will -most likely fail. No big deal. +most likely fail. No big deal.

    @@ -711,44 +677,61 @@ most likely fail. No big deal.

    -

    HSSF now has a logging facility (using log4j - thanks jakarta!) +

    HSSF now has a logging facility (using + commons logging) that will record massive amounts of debugging information. Its mostly useful to us hssf-developing geeks, but might be useful in tracking -down problems. By default we turn this off because it results in -unnecessary performance degradation when fully turned on! Using it is -simple. You need an hssflog.properties file (example listed below, -those familiar with log4j can customize this as they wish). You can -either put this in your home directory (or wherever the default -directory is on windows which I suspect is c:\windows) or you can put -it wherever you want and set the HSSF.log to the path ending in "/" -(or "\\" on windows). If for any reason HSSF can't find it, -you get no logging. If the log configuration dictates the logging be -turned off, you get no logging.

    - -

    Here is an example hssflog.properties (actually its not an example -its mine): -

    - - - - -
    -
    # Set root category priority to DEBUG and its only appender to A1.
    -log4j.rootCategory=DEBUG, A1
    -  
    -# A1 is set to be a ConsoleAppender. 
    -log4j.appender.A1=org.apache.log4j.ConsoleAppender
    -  
    -# A1 uses PatternLayout.
    -log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    -log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
    -#uncomment below to change the level to WARN to disable debugging information.  This effectively turns off logging.
    -#the default level is DEBUG (and changing it to DEBUG is the basically the same thing as leaving it commented out).
    -#log4j.category.org.apache.poi=WARN
    -
    -
    +down problems.

    +

    So Why use commons logging rather than log4j? Well the following discussion from +the jakarta-general mailing list sums it up pretty well. (Thanks Morgan) +

    + +

    +Here's the problem, as I see it. + +

    + +

    +Suppose Commons component A decides to adopt Log4J, Commons component B +decides to adopt LogKit, and Commons component C adopts JDK1.4 logging. +They will all minimally function with the right jars in the classpath. +However you (the end-user) are left with maintaining configuration for 3 +different logging APIs, which is tedious at best. When you take into +account cool features like variable log levels, Log4J appenders and the +like, you're pretty much guaranteed to swallow up useful configuration +options because sophisticated configurations are too difficult to maintain +over mutiple logging implementations. + +

    + +

    + +Contrarily, if all three Commons components use a logging facade, you can +focus all your configuration efforts on one logging implementation. Sure, +there is a trade-off; you don't have access to all the features, and the +interface between the facade and the implementation must be maintained. But +the benefits are not just political; they potentially make the end-users +configuration much easier. + +

    + +

    +Even if all Commons components used the same logging implementation (Log4J +for example), other projects in Jakarta-land may choose otherwise. If you +add enough Jakarta projects to your environment, you eventually end up with +the scenario described above. It's a worthwhile effort to attempt a logging +solution that plays well with the Jakarta community at large. I think in +many cases the Commons Logging component can fill that role. + +

    + +

    +Refer to the commons logging package level javadoc for more information concerning how to +configure commons logging. + +


    - -
    - - - - - - - -
    Changes
    -
    - -
    - - - - - - - -
    1.1.0
    -
    -
      - -
    1. Created new event model
    2. - -
    3. Optimizations made to HSSF including aggregate records for - values, rows, etc.
    4. - -
    5. predictive sizing, offset based writing (instead of lots of - array copies)
    6. - -
    7. minor re-factoring and bug fixes.
    8. - -
    - -
    -
    -
    - -
    - - - - - - - -
    1.0.0
    -
    - - -
      - -
    1. Minor documentation updates.
    2. - -
    - -
    -
    -
    - -
    - - - - - - - -
    0.14.0
    -
    - -
      - -
        - -
      1. Added DataFormat helper class and exposed set and get format - on HSSFCellStyle
      2. - -
      3. Fixed column width apis (unit wise) and various javadoc on - the subject
      4. - -
      5. Fix for Dimensions record (again)... (one of these days I'll - write a unit test for this ;-p).
      6. - -
      7. Some optimization on sheet creation.
      8. - -
      - -
    - -
    -
    -
    - -
    - - - - - - - -
    0.13.0
    -
    - -

    - NO WAY!

    - -
    -
    -
    - -
    - - - - - - - -
    0.12.0
    -
    - -
      - -
    1. Added MulBlank, Blank, ColInfo
    2. - -
    3. Added log4j facility and removed all sys.out type logging
    4. - -
    5. Added support for adding font's, styles and corresponding - high level api for styling cells
    6. - -
    7. added support for changing row height, cell width and default - row height/cell width.
    8. - -
    9. Added fixes for internationalization (UTF-16 should work now - from HSSFCell.setStringValue, etc when the encoding is set)
    10. - -
    11. added support for adding/removing and naming sheets.
    12. - -
    - -
    -
    -
    - -
    - - - - - - - -
    0.11.0
    -
    - -
      - -
    1. Bugfix release. We were throwing an exception when reading - RKRecord objects.
    2. - -
    - -
    -
    -
    - -
    - - - - - - - -
    0.10.0
    -
    - -
      - -
    1. Got continuation records to work (read/write)
    2. - -
    3. Added various pre-support for formulas
    4. - -
    5. Massive API reorganization, repackaging.
    6. - -
    7. BiffViewer class added for validating HSSF & POI and/or - HSSF Output.
    8. - -
    9. Better API support for modification.
    10. - -
    - -
    -
    -
    - -
    - - - - - - - -
    0.7 (and interim releases)
    -
    - -
      - -
    1. Added encoding flag to high and low level api to use utf-16 - when needed (HSSFCell.setEncoding())
    2. - -
    3. added read only support for Label records (which are - reinterpreted as LabelSST when written)
    4. - -
    5. Broken continuation record implementation (oops)
    6. - -
    7. BiffViewer class added for validating HSSF & POI and/or - HSSF Output.
    8. - -
    - -
    -
    -
    - -
    - - - - - - - -
    0.6 (release)
    -
    - -
      - -
    1. Support for read/write and modify.
    2. - -
    3. Read only support for MulRK records (converted to Number when - writing) -
    4. - -
    - -
    -
    -
    - -
    -
    -
    -
    diff --git a/build/jakarta-poi/docs/hssf/index.html b/build/jakarta-poi/docs/hssf/index.html index 3eb2cea03..ea4d07538 100644 --- a/build/jakarta-poi/docs/hssf/index.html +++ b/build/jakarta-poi/docs/hssf/index.html @@ -44,12 +44,16 @@
    HSSF
    +Quick Guide +
    HOWTO
    Use Case
    Pictorial Docs
    +Alternatives +

    Contributer's Guide
    diff --git a/build/jakarta-poi/docs/hssf/record-generator.html b/build/jakarta-poi/docs/hssf/record-generator.html index da3eb87f4..e691284e0 100644 --- a/build/jakarta-poi/docs/hssf/record-generator.html +++ b/build/jakarta-poi/docs/hssf/record-generator.html @@ -44,12 +44,16 @@
    HSSF
    +Quick Guide +
    HOWTO
    Use Case
    Pictorial Docs
    +Alternatives +

    Contributer's Guide
    diff --git a/build/jakarta-poi/docs/hssf/use-case.html b/build/jakarta-poi/docs/hssf/use-case.html index 20ea51433..a8548ee28 100644 --- a/build/jakarta-poi/docs/hssf/use-case.html +++ b/build/jakarta-poi/docs/hssf/use-case.html @@ -44,12 +44,16 @@
    HSSF
    +Quick Guide +
    HOWTO
    Use Case
    Pictorial Docs
    +Alternatives +

    Contributer's Guide
    diff --git a/build/jakarta-poi/docs/index.html b/build/jakarta-poi/docs/index.html index 4b3755eaa..73cc87acb 100644 --- a/build/jakarta-poi/docs/index.html +++ b/build/jakarta-poi/docs/index.html @@ -45,7 +45,7 @@
    Future
    -Download +Download
    1.0 Vision
    @@ -55,6 +55,8 @@
    Changes
    +FAQ +

    Sub-Projects
    diff --git a/build/jakarta-poi/docs/inthenews.html b/build/jakarta-poi/docs/inthenews.html index 2401d0141..6b859afe4 100644 --- a/build/jakarta-poi/docs/inthenews.html +++ b/build/jakarta-poi/docs/inthenews.html @@ -45,7 +45,7 @@
    Future
    -Download +Download
    1.0 Vision
    @@ -55,6 +55,8 @@
    Changes
    +FAQ +

    Sub-Projects
    @@ -268,21 +270,12 @@
    - + diff --git a/build/jakarta-poi/docs/plan/POI20Vision.html b/build/jakarta-poi/docs/plan/POI20Vision.html index da892f3c4..aa0e1f701 100644 --- a/build/jakarta-poi/docs/plan/POI20Vision.html +++ b/build/jakarta-poi/docs/plan/POI20Vision.html @@ -96,7 +96,7 @@ 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 provded we give clarification. + information provided we give clarification.

    @@ -426,37 +426,9 @@

    - Alternatives to using HSSF to manipulate Excel files include: -

    - -
      - -
    1. Buy the $10,000 Formula 1 library - (www.tidestone.com) - now owned by Actuate and accept its crude api and limitations. -
    2. - -
    3. Give up XML, Java, and operating system independence, and - write Visual Basic code in a Microsoft Windows based environment -
    4. - -
    5. Try writing output in Microsoft's poorly documented XHTML - for Office format. -
    6. - -
    - -

    - There is also a decent library for - reading Excel documents written by Andy Khan called xlReader - (http://www.sourceforge.net/projects/xlrd). - It does not provide write ability. -

    - -

    - There are a number of PERL and C alternatives. - None are consistent. -

    + Originally there weren't any decent alternatives for reading or writing + to Excel. This has changed somewhat. +

    @@ -548,10 +520,10 @@ diff --git a/build/jakarta-poi/docs/todo.html b/build/jakarta-poi/docs/todo.html index b9ee12f5e..97fd01ee4 100644 --- a/build/jakarta-poi/docs/todo.html +++ b/build/jakarta-poi/docs/todo.html @@ -45,7 +45,7 @@
    Future
    -Download +Download
    1.0 Vision
    @@ -55,6 +55,8 @@
    Changes
    +FAQ +

    Sub-Projects
    @@ -137,7 +139,15 @@
  • [code] - do it + Finish HDF +
  • +
  • +[code] + Finish Charts +
  • +
  • +[code] + Add Formulas.
  • @@ -156,7 +166,31 @@
  • [code] - do it + Expose functionality in low level records in higher level API +
  • +
  • +[code] + Implement more record types (for other things ... not sure + what this will mean yet). +
  • +
  • +[code] + Implement more record types (for other things ... not sure + what this will mean yet). +
  • +
  • +[code] + Add more dummy checks (for when API user's do things they + "can't" do) +
  • +
  • +[code] + Add support for embedded graphics and stuff like that. +
  • +
  • +[code] + Create new adapter object for handling MulBlank, MulRk, Rk + records.
  • diff --git a/build/jakarta-poi/docs/who.html b/build/jakarta-poi/docs/who.html index aa5d8d92b..44885e2c8 100644 --- a/build/jakarta-poi/docs/who.html +++ b/build/jakarta-poi/docs/who.html @@ -45,7 +45,7 @@
    Future
    -Download +Download
    1.0 Vision
    @@ -55,6 +55,8 @@
    Changes
    +FAQ +

    Sub-Projects
    @@ -199,7 +201,9 @@
  • Glen Stampoultzis (glens at apache.org)
  • -Rainer Klute (klute at apache dot org)
  • +Rainer Klute (klute at apache dot org) + +
  • Nicola Ken Barozzi (barozzi at nicolaken dot com)
  • @@ -220,8 +224,6 @@
    xxxxxxx (French)Francais (French)

    -

    - Growing up in Florida, one does not use very much French on a day - to day basis, and while I know how to say French in French I have - absolutely no idea how to spell it. So if you are so inclined and - have the requisite extended characters on your keyboard, please - email acoliver at apache dot org the proper spelling for French in - French. -

    -
    • @@ -302,21 +295,12 @@
      - +
      JapaneseNihongo (Japanese)

      -

      - If anyone knows how to spell Japanese in a way that Japanese - speakers (who don't recognize the English -- I hope to one day - have the site translated into other lanugages -- volunteers?) - can recognize it without making everyone download new - charactersets just to view the page please step up and send in a - patch to the poi-dev list! -

      -
      • diff --git a/build/jakarta-poi/docs/livesites.html b/build/jakarta-poi/docs/livesites.html index 8c761a0d2..f6e4b8684 100644 --- a/build/jakarta-poi/docs/livesites.html +++ b/build/jakarta-poi/docs/livesites.html @@ -45,7 +45,7 @@
        Future
        -Download +Download
        1.0 Vision
        @@ -55,6 +55,8 @@
        Changes
        +FAQ +

        Sub-Projects
        @@ -134,24 +136,18 @@

      - -

      Here is a list of some of the web sites that are proudly using Poi 1.X (in no particular order): -

      - - -

      - If you do not find your site here, make sure you tell us - (use the word "Livesites" in the email subject, confirm that - you want to be listed publicly, say which version of Poi, and do not - forget to tell us the URL). - We would like to see this list grow bigger every day :-) -

      - + +

      Currently we don't have any sites listed that use Poi, but we're sure they're out there. + Help us change this. If you've + written a site that utilises Poi let us know. +

      + +
      diff --git a/build/jakarta-poi/docs/mail-archives.html b/build/jakarta-poi/docs/mail-archives.html index 8e237b2f1..8e1916bca 100644 --- a/build/jakarta-poi/docs/mail-archives.html +++ b/build/jakarta-poi/docs/mail-archives.html @@ -45,7 +45,7 @@
      Future
      -Download +Download
      1.0 Vision
      @@ -55,6 +55,8 @@
      Changes
      +FAQ +

      Sub-Projects
      diff --git a/build/jakarta-poi/docs/mail-lists.html b/build/jakarta-poi/docs/mail-lists.html index d4b60000c..040722219 100644 --- a/build/jakarta-poi/docs/mail-lists.html +++ b/build/jakarta-poi/docs/mail-lists.html @@ -45,7 +45,7 @@
      Future
      -Download +Download
      1.0 Vision
      @@ -55,6 +55,8 @@
      Changes
      +FAQ +

      Sub-Projects
      diff --git a/build/jakarta-poi/docs/overview.html b/build/jakarta-poi/docs/overview.html index 09733c739..9af14a038 100644 --- a/build/jakarta-poi/docs/overview.html +++ b/build/jakarta-poi/docs/overview.html @@ -45,7 +45,7 @@
      Future
      -Download +Download
      1.0 Vision
      @@ -55,6 +55,8 @@
      Changes
      +FAQ +

      Sub-Projects
      diff --git a/build/jakarta-poi/docs/plan/POI10Vision.html b/build/jakarta-poi/docs/plan/POI10Vision.html index 918edf6eb..40f754716 100644 --- a/build/jakarta-poi/docs/plan/POI10Vision.html +++ b/build/jakarta-poi/docs/plan/POI10Vision.html @@ -243,7 +243,7 @@ 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. + only capable of handling one document at a time.

        @@ -257,7 +257,7 @@
      1. 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 + 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.
      2. @@ -352,12 +352,8 @@

        - The alternative to this project is to - buy the $10,000 Formula 1 library (www.tidestone.com) - and accept its crude api and limitations. As a second alternative, - give up XML and write Visual Basic code on a Microsoft Windows based - Environment or output in Microsoft's beta and primarily undocumented - XML for office format. + Originally there weren't any decent alternatives for reading or writing + to Excel. This has changed somewhat.

    - Benefit + Benefit - Supporting Features + Supporting Features