598 lines
16 KiB
HTML
598 lines
16 KiB
HTML
|
<html xmlns:NetUtils="org.apache.cocoon.util.NetUtils">
|
||
|
<head>
|
||
|
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||
|
<title></title>
|
||
|
<link href="ns4_toxins.css" type="text/css" rel="stylesheet">
|
||
|
<link href="main.css" type="text/css" rel="stylesheet">
|
||
|
<link media="print" href="print.css" type="text/css" rel="stylesheet">
|
||
|
<link href="compact.css" type="text/css" title="compact" rel="alternate stylesheet">
|
||
|
</head>
|
||
|
<body marginheight="0" marginwidth="0">
|
||
|
<div id="banner">
|
||
|
<table width="100%" cellpadding="8" cellspacing="0" border="0">
|
||
|
<tr>
|
||
|
<td><a href="http://www.apache.org/"><img hspace="0" vspace="0" border="0" src="common/images/group-logo.gif"></a></td><td>
|
||
|
<div align="right">
|
||
|
<a href="http://www.apache.org/"><img hspace="0" vspace="0" border="0" src="common/images/project-logo.gif"></a>
|
||
|
</div>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="modbar">
|
||
|
<small><strong><a href="http://www.apache.org/">www.apache.org</a> >
|
||
|
<a href="http://www.apache.org/">jakarta.apache.org</a> >
|
||
|
<a href="#"></a></strong></small>
|
||
|
</div>
|
||
|
<table id="main" width="98%" cellpadding="8" cellspacing="0" border="0">
|
||
|
<tr valign="top">
|
||
|
<td width="20%" id="leftcol">
|
||
|
<div id="navcolumn">
|
||
|
<div>
|
||
|
<small><a href="../index.html">Main</a></small>
|
||
|
</div>
|
||
|
<div>
|
||
|
<small><strong>HSSF</strong></small>
|
||
|
<div>
|
||
|
<small><a href="quick-guide.html">Quick Guide</a></small>
|
||
|
</div>
|
||
|
<div>
|
||
|
<small><a href="how-to.html">HOWTO</a></small>
|
||
|
</div>
|
||
|
<div>
|
||
|
<small><a href="use-case.html">Use Case</a></small>
|
||
|
</div>
|
||
|
<div>
|
||
|
<small><a href="diagrams.html">Pictorial Docs</a></small>
|
||
|
</div>
|
||
|
<div>
|
||
|
<small><a href="alternatives.html">Alternatives</a></small>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div>
|
||
|
<small><strong>Contributer's Guide</strong></small>
|
||
|
<div>
|
||
|
<small><a href="record-generator.html">Record Generator</a></small>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div id="helptext">
|
||
|
<table width="100%" cellpadding="3" cellspacing="0" border="0">
|
||
|
<tr>
|
||
|
<th>How do I...?</th>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>
|
||
|
<div>Learn more about this project? </div>
|
||
|
<div>Print this page...</div>
|
||
|
<div>Troubleshoot...</div>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
</td><td id="bodycol" width="100%">
|
||
|
<div id="topmodule">
|
||
|
<table width="100%" cellpadding="3" cellspacing="0" border="0">
|
||
|
<tr>
|
||
|
<td nowrap="nowrap">
|
||
|
<form method="get" action="http://www.google.com/search" onsubmit="q.value = query.value + ' site:jakarta.apache.org'">
|
||
|
<input type="hidden" name="q"><input maxlength="255" size="35" name="id" id="query" type="text">
|
||
|
<input type="button" value="Search" name="Search">
|
||
|
<img border="0" alt="" height="15" width="2" src="images/seperator2.gif">
|
||
|
<input type="radio" name="web" value="web">web site <input type="radio" name="mail" value="mail">mail lists
|
||
|
</form>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<h2>Quick Guide to HSSF Features</h2>
|
||
|
<font size="-2" color="#000000">
|
||
|
<p>
|
||
|
<a href="mailto:"></a>
|
||
|
</p>
|
||
|
</font>
|
||
|
|
||
|
<div align="right">
|
||
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
||
|
<tr>
|
||
|
<td bgcolor="#003063"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>Quick Guide to Features</b></font></font></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>
|
||
|
<br>
|
||
|
|
||
|
<p>
|
||
|
Want to use HSSF read and write spreadsheets in a hurry? This guide is for you. If you're after
|
||
|
more in-depth coverage of the HSSF user-API please consult the <a href="how-to.html">HOWTO</a>
|
||
|
guide as it contains actual descriptions of how to use this stuff.
|
||
|
</p>
|
||
|
|
||
|
<div align="right">
|
||
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
||
|
<tr>
|
||
|
<td bgcolor="#003063"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Index of Features</b></font></font></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>
|
||
|
<br>
|
||
|
|
||
|
<ul>
|
||
|
|
||
|
<li>
|
||
|
<a href="#NewWorkbook">How to create a new workbook</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#NewSheet">How to create a sheet</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#CreateCells">How to create cells</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#CreateDateCells">How to create date cells</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#CellTypes">Working with different types of cells</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#Alignment">Aligning cells</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#Borders">Working with borders</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#FrillsAndFills">Fills and color</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#MergedCells">Merging cells</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#WorkingWithFonts">Working with fonts</a>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<a href="#ReadWriteWorkbook">Reading and writing</a>
|
||
|
</li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<br>
|
||
|
|
||
|
<div align="right">
|
||
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
||
|
<tr>
|
||
|
<td bgcolor="#003063"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Features</b></font></font></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>
|
||
|
<br>
|
||
|
|
||
|
<anchor id="NewWorkbook"></anchor>
|
||
|
|
||
|
<h4>New Workbook</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="NewSheet"></anchor>
|
||
|
|
||
|
<h4>New Sheet</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet1 = wb.createSheet("new sheet");
|
||
|
HSSFSheet sheet2 = wb.createSheet("second sheet");
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="CreateCells"></anchor>
|
||
|
|
||
|
<h4>Creating Cells</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet = wb.createSheet("new sheet");
|
||
|
|
||
|
// Create a row and put some cells in it. Rows are 0 based.
|
||
|
HSSFRow row = sheet.createRow((short)0);
|
||
|
// Create a cell and put a value in it.
|
||
|
HSSFCell cell = row.createCell((short)0);
|
||
|
cell.setCellValue(1);
|
||
|
|
||
|
// Or do it on one line.
|
||
|
row.createCell((short)1).setCellValue(1.2);
|
||
|
row.createCell((short)2).setCellValue("This is a string");
|
||
|
row.createCell((short)3).setCellValue(true);
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="CreateDateCells"></anchor>
|
||
|
|
||
|
<h4>Creating Date Cells</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet = wb.createSheet("new sheet");
|
||
|
|
||
|
// Create a row and put some cells in it. Rows are 0 based.
|
||
|
HSSFRow row = sheet.createRow((short)0);
|
||
|
|
||
|
// Create a cell and put a date value in it. The first cell is not styled
|
||
|
// as a date.
|
||
|
HSSFCell cell = row.createCell((short)0);
|
||
|
cell.setCellValue(new Date());
|
||
|
|
||
|
// we style the second cell as a date (and time). It is important to
|
||
|
// create a new cell style from the workbook otherwise you can end up
|
||
|
// modifying the built in style and effecting not only this cell but other cells.
|
||
|
HSSFCellStyle cellStyle = wb.createCellStyle();
|
||
|
cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));
|
||
|
cell = row.createCell((short)1);
|
||
|
cell.setCellValue(new Date());
|
||
|
cell.setCellStyle(cellStyle);
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="CellTypes"></anchor>
|
||
|
|
||
|
<h4>Working with different types of cells</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet = wb.createSheet("new sheet");
|
||
|
HSSFRow row = sheet.createRow((short)2);
|
||
|
row.createCell((short) 0).setCellValue(1.1);
|
||
|
row.createCell((short) 1).setCellValue(new Date());
|
||
|
row.createCell((short) 2).setCellValue("a string");
|
||
|
row.createCell((short) 3).setCellValue(true);
|
||
|
row.createCell((short) 4).setCellType(HSSFCell.CELL_TYPE_ERROR);
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="Alignment"></anchor>
|
||
|
|
||
|
<h4>Demonstrates various alignment options</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
public static void main(String[] args)
|
||
|
throws IOException
|
||
|
{
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet = wb.createSheet("new sheet");
|
||
|
HSSFRow row = sheet.createRow((short) 2);
|
||
|
createCell(wb, row, (short) 0, HSSFCellStyle.ALIGN_CENTER);
|
||
|
createCell(wb, row, (short) 1, HSSFCellStyle.ALIGN_CENTER_SELECTION);
|
||
|
createCell(wb, row, (short) 2, HSSFCellStyle.ALIGN_FILL);
|
||
|
createCell(wb, row, (short) 3, HSSFCellStyle.ALIGN_GENERAL);
|
||
|
createCell(wb, row, (short) 4, HSSFCellStyle.ALIGN_JUSTIFY);
|
||
|
createCell(wb, row, (short) 5, HSSFCellStyle.ALIGN_LEFT);
|
||
|
createCell(wb, row, (short) 6, HSSFCellStyle.ALIGN_RIGHT);
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a cell and aligns it a certain way.
|
||
|
*
|
||
|
* @param wb the workbook
|
||
|
* @param row the row to create the cell in
|
||
|
* @param column the column number to create the cell in
|
||
|
* @param align the alignment for the cell.
|
||
|
*/
|
||
|
private static void createCell(HSSFWorkbook wb, HSSFRow row, short column, short align)
|
||
|
{
|
||
|
HSSFCell cell = row.createCell(column);
|
||
|
cell.setCellValue("Align It");
|
||
|
HSSFCellStyle cellStyle = wb.createCellStyle();
|
||
|
cellStyle.setAlignment(align);
|
||
|
cell.setCellStyle(cellStyle);
|
||
|
}
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="Borders"></anchor>
|
||
|
|
||
|
<h4>Working with borders</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet = wb.createSheet("new sheet");
|
||
|
|
||
|
// Create a row and put some cells in it. Rows are 0 based.
|
||
|
HSSFRow row = sheet.createRow((short) 1);
|
||
|
|
||
|
// Create a cell and put a value in it.
|
||
|
HSSFCell cell = row.createCell((short) 1);
|
||
|
cell.setCellValue(4);
|
||
|
|
||
|
// Style the cell with borders all around.
|
||
|
HSSFCellStyle style = wb.createCellStyle();
|
||
|
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
|
||
|
style.setBottomBorderColor(HSSFCellStyle.BLACK);
|
||
|
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
|
||
|
style.setLeftBorderColor(HSSFCellStyle.GREEN);
|
||
|
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
|
||
|
style.setRightBorderColor(HSSFCellStyle.BLUE);
|
||
|
style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);
|
||
|
style.setTopBorderColor(HSSFCellStyle.AUTOMATIC);
|
||
|
cell.setCellStyle(style);
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="FillsAndFrills"></anchor>
|
||
|
|
||
|
<h4>Fills and colors</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet = wb.createSheet("new sheet");
|
||
|
|
||
|
// Create a row and put some cells in it. Rows are 0 based.
|
||
|
HSSFRow row = sheet.createRow((short) 1);
|
||
|
|
||
|
// Aqua background
|
||
|
HSSFCellStyle style = wb.createCellStyle();
|
||
|
style.setFillBackgroundColor(HSSFCellStyle.AQUA);
|
||
|
style.setFillPattern(HSSFCellStyle.BIG_SPOTS);
|
||
|
HSSFCell cell = row.createCell((short) 1);
|
||
|
cell.setCellValue("X");
|
||
|
cell.setCellStyle(style);
|
||
|
|
||
|
// Orange "foreground", foreground being the fill foreground not the font color.
|
||
|
style = wb.createCellStyle();
|
||
|
style.setFillForegroundColor(HSSFCellStyle.ORANGE);
|
||
|
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
|
||
|
cell = row.createCell((short) 2);
|
||
|
cell.setCellValue("X");
|
||
|
cell.setCellStyle(style);
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="MergedCells"></anchor>
|
||
|
|
||
|
<h4>Merging cells</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet = wb.createSheet("new sheet");
|
||
|
|
||
|
HSSFRow row = sheet.createRow((short) 1);
|
||
|
HSSFCell cell = row.createCell((short) 1);
|
||
|
cell.setCellValue("This is a test of merging");
|
||
|
|
||
|
sheet.addMergedRegion(new Region(1,(short)1,1,(short)2));
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="WorkingWithFonts"></anchor>
|
||
|
|
||
|
<h4>Working with fonts</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||
|
HSSFSheet sheet = wb.createSheet("new sheet");
|
||
|
|
||
|
// Create a row and put some cells in it. Rows are 0 based.
|
||
|
HSSFRow row = sheet.createRow((short) 1);
|
||
|
|
||
|
// Create a new font and alter it.
|
||
|
HSSFFont font = wb.createFont();
|
||
|
font.setFontHeightInPoints((short)24);
|
||
|
font.setFontName("Courier New");
|
||
|
font.setItalic(true);
|
||
|
font.setStrikeout(true);
|
||
|
|
||
|
// Fonts are set into a style so create a new one to use.
|
||
|
HSSFCellStyle style = wb.createCellStyle();
|
||
|
style.setFont(font);
|
||
|
|
||
|
// Create a cell and put a value in it.
|
||
|
HSSFCell cell = row.createCell((short) 1);
|
||
|
cell.setCellValue("This is a test of fonts");
|
||
|
cell.setCellStyle(style);
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<anchor id="ReadWriteWorkbook"></anchor>
|
||
|
|
||
|
<h4>Reading and Rewriting Workbooks</h4>
|
||
|
|
||
|
<div align="center">
|
||
|
<table cellspacing="2" cellpadding="2" border="1">
|
||
|
<tr>
|
||
|
<td>
|
||
|
<pre>
|
||
|
POIFSFileSystem fs =
|
||
|
new POIFSFileSystem(new FileInputStream("workbook.xls"));
|
||
|
HSSFWorkbook wb = new HSSFWorkbook(fs);
|
||
|
HSSFSheet sheet = wb.getSheetAt(0);
|
||
|
HSSFRow row = sheet.getRow(2);
|
||
|
HSSFCell cell = row.getCell((short)3);
|
||
|
if (cell == null)
|
||
|
cell = row.createCell((short)3);
|
||
|
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
|
||
|
cell.setCellValue("a test");
|
||
|
|
||
|
// Write the output to a file
|
||
|
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
|
||
|
wb.write(fileOut);
|
||
|
fileOut.close();
|
||
|
</pre>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<br>
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<br>
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
<div id="footer">
|
||
|
<table cellpadding="4" cellspacing="0" border="0">
|
||
|
<tr>
|
||
|
<td><a href="http://www.apache.org/">Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.</a></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="right" width="100%">
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="right" width="100%"><a href="http://krysalis.org/"><img alt="Krysalis Logo" src="images/krysalis-compatible.jpg"></a><a href="http://xml.apache.org/cocoon/"><img alt="Cocoon Logo" src="images/built-with-cocoon.gif"></a><a href="http://jakarta.apache.org/ant/"><img alt="Ant Logo" src="images/ant_logo_medium.gif"></a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>
|