regen'd the site

PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352310 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andrew C. Oliver 2002-04-03 13:25:27 +00:00
parent 42d4a7c512
commit c7bc43607b
20 changed files with 585 additions and 596 deletions

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>
@ -129,7 +131,7 @@
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 1.5-dev (March 22 2002)</b></font></font></td>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 1.5-dev (03-April-2002)</b></font></font></td>
</tr>
<tr>
<td>
@ -137,14 +139,263 @@
<sl>
<li>
<icon alt="update" src="images/update.jpg"></icon>
New project build.
(NKB)</li>
<icon alt="update" src="images/update.jpg"></icon>New project build.(NKB)</li>
<li>
<icon alt="update" src="images/update.jpg"></icon>
New project documentation system based on Cocoon.
(NKB)</li>
<icon alt="update" src="images/update.jpg"></icon>New project documentation system based on Cocoon.(NKB)</li>
<li>
<icon alt="update" src="images/update.jpg"></icon>Package rename(POI-DEVELOPERS)</li>
<li>
<icon alt="fix" src="images/fix.jpg"></icon>Various bug fixes(POI-DEVELOPERS)</li>
<li>
<icon alt="add" src="images/add.jpg"></icon>Early stages of HSF development (not ready for development)(POI-DEVELOPERS)</li>
<li>
<icon alt="add" src="images/add.jpg"></icon>Initial low level record support for charting (not complete)(POI-DEVELOPERS)</li>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 1.1.0 ()</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
<li>
<icon alt="" src="images/.jpg"></icon>Created new event model(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Optimizations made to HSSF including aggregate records for
values, rows, etc.(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>predictive sizing, offset based writing (instead of lots of
array copies)(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>minor re-factoring and bug fixes.(POI-DEVELOPERS)</li>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 1.0.0 (???)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
<li>
<icon alt="" src="images/.jpg"></icon>Minor documentation updates.(POI-DEVELOPERS)</li>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 0.14.0 (???)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
<li>
<icon alt="" src="images/.jpg"></icon>Added DataFormat helper class and exposed set and get format
on HSSFCellStyle(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Fixed column width apis (unit wise) and various javadoc on
the subject(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Fix for Dimensions record (again)... (one of these days I'll
write a unit test for this ;-p).(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Some optimization on sheet creation.(POI-DEVELOPERS)</li>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 0.13.0 (???)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 0.12.0 (???)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
<li>
<icon alt="" src="images/.jpg"></icon>Added MulBlank, Blank, ColInfo(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Added log4j facility and removed all sys.out type logging(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Added support for adding font's, styles and corresponding
high level api for styling cells(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>added support for changing row height, cell width and default
row height/cell width.(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Added fixes for internationalization (UTF-16 should work now
from HSSFCell.setStringValue, etc when the encoding is set)(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>added support for adding/removing and naming sheets.(POI-DEVELOPERS)</li>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 0.11.0 (???)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
<li>
<icon alt="" src="images/.jpg"></icon>Bugfix release. We were throwing an exception when reading
RKRecord objects.(POI-DEVELOPERS)</li>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 0.10.0 (???)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
<li>
<icon alt="" src="images/.jpg"></icon>Got continuation records to work (read/write)(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Added various pre-support for formulas(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Massive API reorganization, repackaging.(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>BiffViewer class added for validating HSSF &amp; POI and/or
HSSF Output.(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Better API support for modification.(POI-DEVELOPERS)</li>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 0.7 (and interim releases) (???)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
<li>
<icon alt="" src="images/.jpg"></icon>Added encoding flag to high and low level api to use utf-16
when needed (HSSFCell.setEncoding())(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>added read only support for Label records (which are
reinterpreted as LabelSST when written)(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Broken continuation record implementation (oops)(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>BiffViewer class added for validating HSSF &amp; POI and/or
HSSF Output.(POI-DEVELOPERS)</li>
</sl>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b> 0.6 (release) (???)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<sl>
<li>
<icon alt="" src="images/.jpg"></icon>Support for read/write and modify.(POI-DEVELOPERS)</li>
<li>
<icon alt="" src="images/.jpg"></icon>Read only support for MulRK records (converted to Number when
writing)
(POI-DEVELOPERS)</li>
</sl>
</td>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>
@ -140,6 +142,11 @@
What is the HSSF "eventmodel"?
</jump>
</li>
<li>
<jump anchor="faq-2">
Why can't read the document I created using Star Office 5.1?
</jump>
</li>
</ul>
</td>
</tr>
@ -168,7 +175,6 @@
<p align="justify">
The HSSF eventmodel package is a new API for reading XLS files more efficiently. It does
require more knowledge on the part of the user, but reduces memory consumption by more than
@ -178,9 +184,28 @@
</td>
</tr>
</table>
</div>
<br>
<anchor id="faq-2"></anchor>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="99%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>
Why can't read the document I created using Star Office 5.1?
</b></font></font></td>
</tr>
<tr>
<td>
<br>
<p align="justify">
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.
</p>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>

View File

@ -44,12 +44,16 @@
<br>
<span class="s1">HSSF</span>
<br>
<a class="s1" href="quick-guide.html">Quick Guide</a>
<br>
<a class="s1" href="how-to.html">HOWTO</a>
<br>
<a class="s1" href="use-case.html">Use Case</a>
<br>
<a class="s1" href="diagrams.html">Pictorial Docs</a>
<br>
<a class="s1" href="alternatives.html">Alternatives</a>
<br>
<br>
<span class="s1">Contributer's Guide</span>
<br>

View File

@ -44,12 +44,16 @@
<br>
<span class="s1">HSSF</span>
<br>
<a class="s1" href="quick-guide.html">Quick Guide</a>
<br>
<a class="s1" href="how-to.html">HOWTO</a>
<br>
<a class="s1" href="use-case.html">Use Case</a>
<br>
<a class="s1" href="diagrams.html">Pictorial Docs</a>
<br>
<a class="s1" href="alternatives.html">Alternatives</a>
<br>
<br>
<span class="s1">Contributer's Guide</span>
<br>

View File

@ -44,12 +44,16 @@
<br>
<span class="s1">HSSF</span>
<br>
<a class="s1" href="quick-guide.html">Quick Guide</a>
<br>
<a class="s1" href="how-to.html">HOWTO</a>
<br>
<a class="s1" href="use-case.html">Use Case</a>
<br>
<a class="s1" href="diagrams.html">Pictorial Docs</a>
<br>
<a class="s1" href="alternatives.html">Alternatives</a>
<br>
<br>
<span class="s1">Contributer's Guide</span>
<br>
@ -97,30 +101,6 @@
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="99%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Recent revision history</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ul>
<li>12.30.2001 - revised for poi 1.0-final - minor revisions</li>
<li>01.03.2001 - revised for poi 1.1-devel</li>
</ul>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="99%">
<tr>
@ -130,17 +110,18 @@
<td>
<br>
<p align="justify">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
<p align="justify">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.</p>
<p align="justify">
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.</p>
@ -215,10 +196,8 @@ org.apache.poi.hssf.usermodel.HSSFWorkbook.
<p align="justify">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").</p>
@ -263,8 +242,10 @@ org.apache.poi.hssf.dev.HSSF test class):</p>
<table cellspacing="2" cellpadding="2" border="1">
<tr>
<td>
<pre> // create a new file
FileOutputStream out = new FileOutputStream("/home/me/myfile.xls");
<pre> short rownum;
// create a new file
FileOutputStream out = new FileOutputStream("workbook.xls");
// create a new workbook
HSSFWorkbook wb = new HSSFWorkbook();
// create a new sheet
@ -282,17 +263,17 @@ org.apache.poi.hssf.dev.HSSF test class):</p>
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):</p>
//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 &lt; 300; rownum++)
for (rownum = (short) 0; rownum &lt; 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 &lt; 50; cellnum += 2)
for (short cellnum = (short) 0; cellnum &lt; 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):</p>
cs3.setBorderBottom(cs3.BORDER_THICK);
//create 50 cells
for (short cellnum = (short)0; cellnum &lt; 50; cellnum++) {
for (short cellnum = (short) 0; cellnum &lt; 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):</p>
// 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.</p>
<p align="justify">An example of this can be seen in
<a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/poi/poi/production/src/net/sourceforge/poi/hssf/dev/HSSF.java?rev=HEAD&content-type=text/plain">org.apache.poi.hssf.dev.HSSF</a>.</p>
<a href="http://cvs.apache.org/viewcvs/~checkout~/jakarta-poi/src/java/org/apache/poi/hssf/dev/HSSF.java?rev=1.1">org.apache.poi.hssf.dev.HSSF</a>.</p>
</td>
</tr>
@ -498,118 +483,95 @@ comments:</p>
<tr>
<td>
<pre>
//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 &lt; 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");
// 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 &lt; 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;
}
}</pre>
}
</pre>
</td>
</tr>
</table>
@ -683,15 +645,19 @@ export CLASSPATH=$CLASSPATH:$HSSFDIR/hssf.jar:$HSSFDIR/poi-poifs.jar:$HSSFDIR/po
</ul>
<p align="justify"></p>
<p align="justify">This should generate a test sheet in your home directory called <code>"myxls.xls"</code>. </p>
<ul>
<li>Type:
<code>java org.apache.poi.hssf.dev.HSSF ~/input.xls output.xls
<code>java org.apache.poi.hssf.dev.HSSF ~/input.xls output.xls</code>
<p align="justify">
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. </code>
most likely fail. No big deal. </p>
</li>
</ul>
@ -711,44 +677,61 @@ most likely fail. No big deal. </code>
<td>
<br>
<p align="justify">HSSF now has a logging facility (using log4j - thanks jakarta!)
<p align="justify">HSSF now has a logging facility (using
<a href="http://jakarta.apache.org/commons/logging.html">commons logging</a>)
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.</p>
<p align="justify">Here is an example hssflog.properties (actually its not an example
its mine):
<div align="center">
<table cellspacing="2" cellpadding="2" border="1">
<tr>
<td>
<pre># 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</pre>
</td>
</tr>
</table>
</div>
down problems.
</p>
<p align="justify">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)
</p>
<p align="justify">
<em>Here's the problem, as I see it.</em>
</p>
<p align="justify">
<em>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.</em>
</p>
<p align="justify">
<em>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.</em>
</p>
<p align="justify">
<em>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.</em>
</p>
<p align="justify">
Refer to the commons logging package level javadoc for more information concerning how to
<a href="http://jakarta.apache.org/commons/logging/api/index.html">configure commons logging.</a>
</p>
</td>
</tr>
@ -800,7 +783,7 @@ matching "on" exactly.</p>
<p align="justify">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.</p>
yet. When it does something, we'll document it.</p>
</td>
@ -840,298 +823,12 @@ are you using HSSF/POIFS? How would you like to use it? What features
are most important first?
</p>
<p align="justify">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.</p>
<p align="justify">Current list of priorities:</p>
<ol>
<li>Helper class for fonts, etc.</li>
<li>Add Formulas.</li>
<li>Implement more record types (for other things ... not sure
what this will mean yet).</li>
<li>Add more dummy checks (for when API user's do things they
"can't" do)</li>
<li>Add support for embedded graphics and stuff like that.</li>
<li>Create new adapter object for handling MulBlank, MulRk, Rk
records.</li>
</ol>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="98%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-1"><font face="Arial,sans-serif"><b>Changes</b></font></font></td>
</tr>
<tr>
<td>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>1.1.0</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ol>
<li>Created new event model</li>
<li>Optimizations made to HSSF including aggregate records for
values, rows, etc.</li>
<li>predictive sizing, offset based writing (instead of lots of
array copies)</li>
<li>minor re-factoring and bug fixes.</li>
</ol>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>1.0.0</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ol>
<li>Minor documentation updates.</li>
</ol>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>0.14.0</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ol>
<ol>
<li>Added DataFormat helper class and exposed set and get format
on HSSFCellStyle</li>
<li>Fixed column width apis (unit wise) and various javadoc on
the subject</li>
<li>Fix for Dimensions record (again)... (one of these days I'll
write a unit test for this ;-p).</li>
<li>Some optimization on sheet creation.</li>
</ol>
</ol>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>0.13.0</b></font></font></td>
</tr>
<tr>
<td>
<br>
<p align="justify">- NO WAY!</p>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>0.12.0</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ol>
<li>Added MulBlank, Blank, ColInfo</li>
<li>Added log4j facility and removed all sys.out type logging</li>
<li>Added support for adding font's, styles and corresponding
high level api for styling cells</li>
<li>added support for changing row height, cell width and default
row height/cell width.</li>
<li>Added fixes for internationalization (UTF-16 should work now
from HSSFCell.setStringValue, etc when the encoding is set)</li>
<li>added support for adding/removing and naming sheets.</li>
</ol>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>0.11.0</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ol>
<li>Bugfix release. We were throwing an exception when reading
RKRecord objects.</li>
</ol>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>0.10.0</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ol>
<li>Got continuation records to work (read/write)</li>
<li>Added various pre-support for formulas</li>
<li>Massive API reorganization, repackaging.</li>
<li>BiffViewer class added for validating HSSF &amp; POI and/or
HSSF Output.</li>
<li>Better API support for modification.</li>
</ol>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>0.7 (and interim releases)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ol>
<li>Added encoding flag to high and low level api to use utf-16
when needed (HSSFCell.setEncoding())</li>
<li>added read only support for Label records (which are
reinterpreted as LabelSST when written)</li>
<li>Broken continuation record implementation (oops)</li>
<li>BiffViewer class added for validating HSSF &amp; POI and/or
HSSF Output.</li>
</ol>
</td>
</tr>
</table>
</div>
<br>
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="97%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="-2"><font face="Arial,sans-serif"><b>0.6 (release)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<ol>
<li>Support for read/write and modify.</li>
<li>Read only support for MulRK records (converted to Number when
writing)
</li>
</ol>
</td>
</tr>
</table>
</div>
<br>
</td>
</tr>
</table>
</div>
<br>
</td>
</tr>

View File

@ -44,12 +44,16 @@
<br>
<span class="s1">HSSF</span>
<br>
<a class="s1" href="quick-guide.html">Quick Guide</a>
<br>
<a class="s1" href="how-to.html">HOWTO</a>
<br>
<a class="s1" href="use-case.html">Use Case</a>
<br>
<a class="s1" href="diagrams.html">Pictorial Docs</a>
<br>
<a class="s1" href="alternatives.html">Alternatives</a>
<br>
<br>
<span class="s1">Contributer's Guide</span>
<br>

View File

@ -44,12 +44,16 @@
<br>
<span class="s1">HSSF</span>
<br>
<a class="s1" href="quick-guide.html">Quick Guide</a>
<br>
<a class="s1" href="how-to.html">HOWTO</a>
<br>
<a class="s1" href="use-case.html">Use Case</a>
<br>
<a class="s1" href="diagrams.html">Pictorial Docs</a>
<br>
<a class="s1" href="alternatives.html">Alternatives</a>
<br>
<br>
<span class="s1">Contributer's Guide</span>
<br>

View File

@ -44,12 +44,16 @@
<br>
<span class="s1">HSSF</span>
<br>
<a class="s1" href="quick-guide.html">Quick Guide</a>
<br>
<a class="s1" href="how-to.html">HOWTO</a>
<br>
<a class="s1" href="use-case.html">Use Case</a>
<br>
<a class="s1" href="diagrams.html">Pictorial Docs</a>
<br>
<a class="s1" href="alternatives.html">Alternatives</a>
<br>
<br>
<span class="s1">Contributer's Guide</span>
<br>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>
@ -268,21 +270,12 @@
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>xxxxxxx (French)</b></font></font></td>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>Francais (French)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<p align="justify">
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.
</p>
<ul>
<li>
@ -302,21 +295,12 @@
<div align="right">
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>Japanese</b></font></font></td>
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>Nihongo (Japanese)</b></font></font></td>
</tr>
<tr>
<td>
<br>
<p align="justify">
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!
</p>
<ul>
<li>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>
@ -135,7 +137,9 @@
<td>
<br>
<p align="justify">Here is a list of some of the web sites that are proudly using Poi 1.X (in no particular order):
<p align="justify">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.
</p>
<!--
<ul>
@ -144,14 +148,6 @@
</s1>
-->
<p align="justify">
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 :-)
</p>
</td>
</tr>
</table>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>

View File

@ -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.
</p>
<ol>
@ -257,7 +257,7 @@
<li>
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.
</li>
@ -352,12 +352,8 @@
<br>
<p align="justify">
The alternative to this project is to
buy the $10,000 Formula 1 library (<a href="http://www.tidestone.com/">www.tidestone.com</a>)
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 <a href="../hssf/alternatives.html">alternatives</a> for reading or writing
to Excel. This has changed somewhat.
</p>
</td>

View File

@ -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.
</p>
<p align="justify">
@ -426,36 +426,8 @@
<br>
<p align="justify">
Alternatives to using HSSF to manipulate Excel files include:
</p>
<ol>
<li>Buy the $10,000 Formula 1 library
(<a href="http://www.f1j.com/">www.tidestone.com</a>)
now owned by Actuate and accept its crude api and limitations.
</li>
<li>Give up XML, Java, and operating system independence, and
write Visual Basic code in a Microsoft Windows based environment
</li>
<li>Try writing output in Microsoft's poorly documented XHTML
for Office format.
</li>
</ol>
<p align="justify">
There is also a decent library for
reading Excel documents written by Andy Khan called xlReader
(<a href="http://www.sourceforge.net/projects/xlrd">http://www.sourceforge.net/projects/xlrd</a>).
It does not provide write ability.
</p>
<p align="justify">
There are a number of PERL and C alternatives.
None are consistent.
Originally there weren't any decent <a href="../hssf/alternatives.html">alternatives</a> for reading or writing
to Excel. This has changed somewhat.
</p>
</td>
@ -548,10 +520,10 @@
<tr>
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
Benefit
<b>Benefit</b>
</font></td>
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
Supporting Features
<b>Supporting Features</b>
</font></td>
</tr>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>
@ -137,7 +139,15 @@
<sl>
<li>
<em>[code]</em>
do it
Finish HDF
</li>
<li>
<em>[code]</em>
Finish Charts
</li>
<li>
<em>[code]</em>
Add Formulas.
</li>
</sl>
</td>
@ -156,7 +166,31 @@
<sl>
<li>
<em>[code]</em>
do it
Expose functionality in low level records in higher level API
</li>
<li>
<em>[code]</em>
Implement more record types (for other things ... not sure
what this will mean yet).
</li>
<li>
<em>[code]</em>
Implement more record types (for other things ... not sure
what this will mean yet).
</li>
<li>
<em>[code]</em>
Add more dummy checks (for when API user's do things they
"can't" do)
</li>
<li>
<em>[code]</em>
Add support for embedded graphics and stuff like that.
</li>
<li>
<em>[code]</em>
Create new adapter object for handling MulBlank, MulRk, Rk
records.
</li>
</sl>
</td>

View File

@ -45,7 +45,7 @@
<br>
<a class="s1" href="historyandfuture.html">Future</a>
<br>
<a class="s1" href="http://sourceforge.net/project/showfiles.php?group_id=32701">Download</a>
<a class="s1" href="http://jakarta.apache.org/builds/jakarta-poi/">Download</a>
<br>
<a class="s1" href="plan/POI10Vision.html">1.0 Vision</a>
<br>
@ -55,6 +55,8 @@
<br>
<a class="s1" href="changes.html">Changes</a>
<br>
<a class="s1" href="faq.html">FAQ</a>
<br>
<br>
<span class="s1">Sub-Projects</span>
<br>
@ -201,6 +203,8 @@
<li>
<a href="http://www.rainer-klute.de/">Rainer Klute</a> (klute at apache dot org)</li>
<li>Nicola Ken Barozzi (barozzi at nicolaken dot com)</li>
</ul>
</td>
@ -220,8 +224,6 @@
<ul>
<li>Nicola Ken Barozzi (barozzi at nicolaken dot com)</li>
<li>Ryan Ackley (sackley at cfl dot rr dot com)</li>
</ul>