/*********************************************************************
*
* Copyright (C) 2002 Andrew Khan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
package jxl.write;
import java.io.IOException;
import jxl.Range;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
/**
* A writable workbook
*/
public abstract class WritableWorkbook
{
// Globally available stuff
/**
* The default font for Cell formats
*/
public static final WritableFont ARIAL_10_PT =
new WritableFont(WritableFont.ARIAL);
/**
* The font used for hyperlinks
*/
public static final WritableFont HYPERLINK_FONT =
new WritableFont(WritableFont.ARIAL,
WritableFont.DEFAULT_POINT_SIZE,
WritableFont.NO_BOLD,
false,
UnderlineStyle.SINGLE,
Colour.BLUE);
/**
* The default style for cells
*/
public static final WritableCellFormat NORMAL_STYLE =
new WritableCellFormat(ARIAL_10_PT, NumberFormats.DEFAULT);
/**
* The style used for hyperlinks
*/
public static final WritableCellFormat HYPERLINK_STYLE =
new WritableCellFormat(HYPERLINK_FONT);
/**
* A cell format used to hide the cell contents
*/
public static final WritableCellFormat HIDDEN_STYLE =
new WritableCellFormat(new DateFormat(";;;"));
/**
* Constructor used by the implemenation class
*/
protected WritableWorkbook()
{
}
/**
* Gets the sheets within this workbook. Use of this method for
* large worksheets can cause performance problems.
*
* @return an array of the individual sheets
*/
public abstract WritableSheet[] getSheets();
/**
* Gets the sheet names
*
* @return an array of strings containing the sheet names
*/
public abstract String[] getSheetNames();
/**
* Gets the specified sheet within this workbook
*
* @param index the zero based index of the reQuired sheet
* @return The sheet specified by the index
* @exception IndexOutOfBoundsException when index refers to a non-existent
* sheet
*/
public abstract WritableSheet getSheet(int index)
throws IndexOutOfBoundsException;
/**
* Gets the sheet with the specified name from within this workbook
*
* @param name the sheet name
* @return The sheet with the specified name, or null if it is not found
*/
public abstract WritableSheet getSheet(String name);
/**
* Returns the cell for the specified location eg. "Sheet1!A4".
* This is identical to using the CellReferenceHelper with its
* associated performance overheads, consequently it should
* be use sparingly
*
* @param loc the cell to retrieve
* @return the cell at the specified location
*/
public abstract WritableCell getWritableCell(String loc);
/**
* Returns the number of sheets in this workbook
*
* @return the number of sheets in this workbook
*/
public abstract int getNumberOfSheets();
/**
* Closes this workbook, and makes any memory allocated available
* for garbage collection. Also closes the underlying output stream
* if necessary.
*
* @exception IOException
* @exception WriteException
*/
public abstract void close() throws IOException, WriteException;
/**
* Creates, and returns a worksheet at the specified position
* with the specified name
* If the index specified is less than or equal to zero, the new sheet
* is created at the beginning of the workbook. If the index is greater
* than the number of sheet, then the sheet is created at the
* end of the workbook.
*
* @param name the sheet name
* @param index the index number at which to insert
* @return the new sheet
*/
public abstract WritableSheet createSheet(String name, int index);
/**
* Imports a sheet from a different workbook. Does a deep copy on all
* elements within that sheet
*
* @param name the name of the new sheet
* @param index the position for the new sheet within this workbook
* @param sheet the sheet (from another workbook) to merge into this one
* @return the new sheet
*/
public abstract WritableSheet importSheet(String name, int index, Sheet s);
/**
* Copy sheet within the same workbook. The sheet specified is copied to
* the new sheet name at the position
*
* @param s the index of the sheet to copy
* @param name the name of the new sheet
* @param index the position of the new sheet
*/
public abstract void copySheet(int s, String name, int index);
/**
* Copies the specified sheet and places it at the index
* specified by the parameter
*
* @param s the name of the sheet to copy
* @param name the name of the new sheet
* @param index the position of the new sheet
*/
public abstract void copySheet(String s, String name, int index);
/**
* Removes the sheet at the specified index from this workbook
*
* @param index the sheet index to remove
*/
public abstract void removeSheet(int index);
/**
* Moves the specified sheet within this workbook to another index
* position.
*
* @param fromIndex the zero based index of the required sheet
* @param toIndex the zero based index of the required sheet
* @return the sheet that has been moved
*/
public abstract WritableSheet moveSheet(int fromIndex, int toIndex);
/**
* Writes out the data held in this workbook in Excel format
*
* @exception IOException
*/
public abstract void write() throws IOException;
/**
* Indicates whether or not this workbook is protected
*
* @param prot Protected flag
*/
public abstract void setProtected(boolean prot);
/**
* Sets the RGB value for the specified colour for this workbook
*
* @param c the colour whose RGB value is to be overwritten
* @param r the red portion to set (0-255)
* @param g the green portion to set (0-255)
* @param b the blue portion to set (0-255)
*/
public abstract void setColourRGB(Colour c, int r, int g, int b);
/**
* This method can be used to create a writable clone of some other
* workbook
*
* @param w the workdoock to copy
* @deprecated Copying now occurs implicitly as part of the overloaded
* factory method Workbook.createWorkbood
*/
public void copy(Workbook w)
{
// Was an abstract method - leave the method body blank
}
/**
* Gets the named cell from this workbook. The name refers to a
* range of cells, then the cell on the top left is returned. If
* the name cannot be, null is returned
*
* @param name the name of the cell/range to search for
* @return the cell in the top left of the range if found, NULL
* otherwise
*/
public abstract WritableCell findCellByName(String name);
/**
* Gets the named range from this workbook. The Range object returns
* contains all the cells from the top left to the bottom right
* of the range.
* If the named range comprises an adjacent range,
* the Range[] will contain one object; for non-adjacent
* ranges, it is necessary to return an array of length greater than
* one.
* If the named range contains a single cell, the top left and
* bottom right cell will be the same cell
*
* @param name the name of the cell/range to search for
* @return the range of cells
*/
public abstract Range[] findByName(String name);
/**
* Gets the named ranges
*
* @return the list of named cells within the workbook
*/
public abstract String[] getRangeNames();
/**
* Removes the specified named range from the workbook. Note that
* removing a name could cause formulas which use that name to
* calculate their results incorrectly
*
* @param name the name to remove
*/
public abstract void removeRangeName(String name);
/**
* Add new named area to this workbook with the given information.
*
* @param name name to be created.
* @param sheet sheet containing the name
* @param firstCol first column this name refers to.
* @param firstRow first row this name refers to.
* @param lastCol last column this name refers to.
* @param lastRow last row this name refers to.
*/
public abstract void addNameArea(String name,
WritableSheet sheet,
int firstCol,
int firstRow,
int lastCol,
int lastRow);
/**
* Sets a new output file. This allows the same workbook to be
* written to various different output files without having to
* read in any templates again
*
* @param fileName the file name
* @exception IOException
*/
public abstract void setOutputFile(java.io.File fileName)
throws IOException;
}
|