<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "../dtd/document-v11.dtd">

<document>
 <header>
  <title>HSSF</title>
  <subtitle>Overview</subtitle>
  <authors>
   <person name="Andrew C. Oliver" email="acoliver@apache.org"/>     
   <person name="Nicola Ken Barozzi" email="barozzi@nicolaken.com"/>     
  </authors>
 </header>

 <body>
 <section><title>Overview</title>

  <p>HSSF is the POI Project's pure Java implementation of the Excel '97(-2002) file format.</p>
  <p>HSSF provides a way to read spreadsheets create, modify, read and write XLS spreadsheets
     It provides: 
  </p>
  <ul>
        <li>low level structures for those with special needs</li>
        <li>an eventmodel api for efficient read-only access</li>
        <li>a full usermodel api for creating, reading and modifying XLS files</li>
  </ul>
  <p>
        Truth be told there is probably a better way to generate your spreadsheet
        generation (yet you'll still be using HSSF indirectly).  At the time of
        this writing we're in the process of moving the HSSF Serializer over to 
        the <link href="http://xml.apache.org/cocoon">Apache Cocoon
        Project</link>.  With Cocoon you can serialize any XML datasource (of
        which might be a ESQL page outputting in SQL for instance) by simply 
        applying the stylesheet and designating the serializer.
  </p>
  <p>
        If you're merely reading spreadsheet data, then use the eventmodel api
        in the org.apache.poi.hssf.eventmodel package.
  </p>
  <p>
        If you're modifying spreadsheet data then use the usermodel api.  You
        can also generate spreadsheets this way, but using Cocoon (which will do
        it this way indirectly) is the best way...we promise.
  </p>

  </section>
 </body>
</document>
