improved test cases: moved common hssf-xssf test to org.apache.poi.ss namespace, removed duplicate tests, refactored code to throw same exceptions, etc
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@759112 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ecf6617071
commit
52ab464cab
@ -285,7 +285,7 @@ public final class PageSettingsBlock extends RecordAggregate {
|
|||||||
retval.setVResolution(( short ) 300);
|
retval.setVResolution(( short ) 300);
|
||||||
retval.setHeaderMargin( 0.5);
|
retval.setHeaderMargin( 0.5);
|
||||||
retval.setFooterMargin( 0.5);
|
retval.setFooterMargin( 0.5);
|
||||||
retval.setCopies(( short ) 0);
|
retval.setCopies(( short ) 1);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,7 +352,7 @@ public final class PageSettingsBlock extends RecordAggregate {
|
|||||||
case Sheet.TopMargin: return _topMargin;
|
case Sheet.TopMargin: return _topMargin;
|
||||||
case Sheet.BottomMargin: return _bottomMargin;
|
case Sheet.BottomMargin: return _bottomMargin;
|
||||||
}
|
}
|
||||||
throw new RuntimeException( "Unknown margin constant: " + marginIndex );
|
throw new IllegalArgumentException( "Unknown margin constant: " + marginIndex );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -372,7 +372,7 @@ public final class PageSettingsBlock extends RecordAggregate {
|
|||||||
case Sheet.TopMargin: return 1.0;
|
case Sheet.TopMargin: return 1.0;
|
||||||
case Sheet.BottomMargin: return 1.0;
|
case Sheet.BottomMargin: return 1.0;
|
||||||
}
|
}
|
||||||
throw new RuntimeException( "Unknown margin constant: " + margin );
|
throw new IllegalArgumentException( "Unknown margin constant: " + margin );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -401,7 +401,7 @@ public final class PageSettingsBlock extends RecordAggregate {
|
|||||||
m = _bottomMargin;
|
m = _bottomMargin;
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
throw new RuntimeException( "Unknown margin constant: " + margin );
|
throw new IllegalArgumentException( "Unknown margin constant: " + margin );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m.setMargin( size );
|
m.setMargin( size );
|
||||||
|
@ -91,7 +91,7 @@ public class HSSFCell implements Cell {
|
|||||||
/**
|
/**
|
||||||
* The maximum number of columns in BIFF8
|
* The maximum number of columns in BIFF8
|
||||||
*/
|
*/
|
||||||
private static final int LAST_COLUMN_NUMBER = 255; // 2^8 - 1
|
public static final int LAST_COLUMN_NUMBER = 255; // 2^8 - 1
|
||||||
private static final String LAST_COLUMN_NAME = "IV";
|
private static final String LAST_COLUMN_NAME = "IV";
|
||||||
|
|
||||||
public final static short ENCODING_UNCHANGED = -1;
|
public final static short ENCODING_UNCHANGED = -1;
|
||||||
@ -626,6 +626,9 @@ public class HSSFCell implements Cell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getCellFormula() {
|
public String getCellFormula() {
|
||||||
|
if (!(_record instanceof FormulaRecordAggregate)) {
|
||||||
|
throw typeMismatch(CELL_TYPE_FORMULA, _cellType, true);
|
||||||
|
}
|
||||||
return HSSFFormulaParser.toFormulaString(_book, ((FormulaRecordAggregate)_record).getFormulaTokens());
|
return HSSFFormulaParser.toFormulaString(_book, ((FormulaRecordAggregate)_record).getFormulaTokens());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,6 +124,7 @@ public final class HSSFName implements Name {
|
|||||||
if (rec != _definedNameRec) {
|
if (rec != _definedNameRec) {
|
||||||
if (rec.getNameText().equalsIgnoreCase(nameName) && sheetNumber == rec.getSheetNumber()){
|
if (rec.getNameText().equalsIgnoreCase(nameName) && sheetNumber == rec.getSheetNumber()){
|
||||||
String msg = "The "+(sheetNumber == 0 ? "workbook" : "sheet")+" already contains this name: " + nameName;
|
String msg = "The "+(sheetNumber == 0 ? "workbook" : "sheet")+" already contains this name: " + nameName;
|
||||||
|
_definedNameRec.setNameText(nameName + "(2)");
|
||||||
throw new IllegalArgumentException(msg);
|
throw new IllegalArgumentException(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -437,15 +437,17 @@ public final class HSSFRow implements Row {
|
|||||||
/**
|
/**
|
||||||
* set the row's height or set to ff (-1) for undefined/default-height. Set the height in "twips" or
|
* set the row's height or set to ff (-1) for undefined/default-height. Set the height in "twips" or
|
||||||
* 1/20th of a point.
|
* 1/20th of a point.
|
||||||
* @param height rowheight or 0xff for undefined (use sheet default)
|
* @param height rowheight or -1 for undefined (use sheet default)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void setHeight(short height)
|
public void setHeight(short height)
|
||||||
{
|
{
|
||||||
|
if(height == -1){
|
||||||
// row.setOptionFlags(
|
row.setHeight((short)(0xFF | 0x8000));
|
||||||
row.setBadFontHeight(true);
|
} else {
|
||||||
row.setHeight(height);
|
row.setBadFontHeight(true);
|
||||||
|
row.setHeight(height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -466,15 +468,17 @@ public final class HSSFRow implements Row {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* set the row's height in points.
|
* set the row's height in points.
|
||||||
* @param height row height in points
|
* @param height row height in points, <code>-1</code> means to use the default height
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void setHeightInPoints(float height)
|
public void setHeightInPoints(float height)
|
||||||
{
|
{
|
||||||
|
if(height == -1){
|
||||||
// row.setOptionFlags(
|
row.setHeight((short)(0xFF | 0x8000));
|
||||||
row.setBadFontHeight(true);
|
} else {
|
||||||
row.setHeight((short) (height * 20));
|
row.setBadFontHeight(true);
|
||||||
|
row.setHeight((short) (height * 20));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,18 +67,6 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
|
|||||||
private static final POILogger log = POILogFactory.getLogger(HSSFSheet.class);
|
private static final POILogger log = POILogFactory.getLogger(HSSFSheet.class);
|
||||||
private static final int DEBUG = POILogger.DEBUG;
|
private static final int DEBUG = POILogger.DEBUG;
|
||||||
|
|
||||||
/* Constants for margins */
|
|
||||||
public static final short LeftMargin = Sheet.LeftMargin;
|
|
||||||
public static final short RightMargin = Sheet.RightMargin;
|
|
||||||
public static final short TopMargin = Sheet.TopMargin;
|
|
||||||
public static final short BottomMargin = Sheet.BottomMargin;
|
|
||||||
|
|
||||||
public static final byte PANE_LOWER_RIGHT = (byte)0;
|
|
||||||
public static final byte PANE_UPPER_RIGHT = (byte)1;
|
|
||||||
public static final byte PANE_LOWER_LEFT = (byte)2;
|
|
||||||
public static final byte PANE_UPPER_LEFT = (byte)3;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used for compile-time optimization. This is the initial size for the collection of
|
* Used for compile-time optimization. This is the initial size for the collection of
|
||||||
* rows. It is currently set to 20. If you generate larger sheets you may benefit
|
* rows. It is currently set to 20. If you generate larger sheets you may benefit
|
||||||
@ -236,14 +224,16 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
|
|||||||
*/
|
*/
|
||||||
public void removeRow(Row row) {
|
public void removeRow(Row row) {
|
||||||
HSSFRow hrow = (HSSFRow) row;
|
HSSFRow hrow = (HSSFRow) row;
|
||||||
|
if (row.getSheet() != this) {
|
||||||
|
throw new IllegalArgumentException("Specified row does not belong to this sheet");
|
||||||
|
}
|
||||||
|
|
||||||
if (_rows.size() > 0) {
|
if (_rows.size() > 0) {
|
||||||
Integer key = new Integer(row.getRowNum());
|
Integer key = new Integer(row.getRowNum());
|
||||||
HSSFRow removedRow = _rows.remove(key);
|
HSSFRow removedRow = _rows.remove(key);
|
||||||
if (removedRow != row) {
|
if (removedRow != row) {
|
||||||
if (removedRow != null) {
|
//should not happen if the input argument is valid
|
||||||
_rows.put(key, removedRow);
|
throw new IllegalArgumentException("Specified row does not belong to this sheet");
|
||||||
}
|
|
||||||
throw new RuntimeException("Specified row does not belong to this sheet");
|
|
||||||
}
|
}
|
||||||
if (hrow.getRowNum() == getLastRowNum())
|
if (hrow.getRowNum() == getLastRowNum())
|
||||||
{
|
{
|
||||||
@ -488,7 +478,7 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
|
|||||||
|
|
||||||
public float getDefaultRowHeightInPoints()
|
public float getDefaultRowHeightInPoints()
|
||||||
{
|
{
|
||||||
return (_sheet.getDefaultRowHeight() / 20);
|
return ((float)_sheet.getDefaultRowHeight() / 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1434,9 +1424,9 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
|
|||||||
* Sets a page break at the indicated column
|
* Sets a page break at the indicated column
|
||||||
* @param column
|
* @param column
|
||||||
*/
|
*/
|
||||||
public void setColumnBreak(short column) {
|
public void setColumnBreak(int column) {
|
||||||
validateColumn(column);
|
validateColumn((short)column);
|
||||||
_sheet.getPageSettings().setColumnBreak(column, (short)0, (short)65535);
|
_sheet.getPageSettings().setColumnBreak((short)column, (short)0, (short)65535);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1444,7 +1434,7 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
|
|||||||
* @param column FIXME: Document this!
|
* @param column FIXME: Document this!
|
||||||
* @return FIXME: Document this!
|
* @return FIXME: Document this!
|
||||||
*/
|
*/
|
||||||
public boolean isColumnBroken(short column) {
|
public boolean isColumnBroken(int column) {
|
||||||
return _sheet.getPageSettings().isColumnBroken(column);
|
return _sheet.getPageSettings().isColumnBroken(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1452,7 +1442,7 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
|
|||||||
* Removes a page break at the indicated column
|
* Removes a page break at the indicated column
|
||||||
* @param column
|
* @param column
|
||||||
*/
|
*/
|
||||||
public void removeColumnBreak(short column) {
|
public void removeColumnBreak(int column) {
|
||||||
_sheet.getPageSettings().removeColumnBreak(column);
|
_sheet.getPageSettings().removeColumnBreak(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1857,4 +1847,16 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
|
|||||||
public HSSFSheetConditionalFormatting getSheetConditionalFormatting() {
|
public HSSFSheetConditionalFormatting getSheetConditionalFormatting() {
|
||||||
return new HSSFSheetConditionalFormatting(this);
|
return new HSSFSheetConditionalFormatting(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the name of this sheet
|
||||||
|
*
|
||||||
|
* @return the name of this sheet
|
||||||
|
*/
|
||||||
|
public String getSheetName() {
|
||||||
|
HSSFWorkbook wb = getWorkbook();
|
||||||
|
int idx = wb.getSheetIndex(this);
|
||||||
|
return wb.getSheetName(idx);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -752,8 +752,8 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm
|
|||||||
|
|
||||||
HSSFSheet sheet = new HSSFSheet(this);
|
HSSFSheet sheet = new HSSFSheet(this);
|
||||||
|
|
||||||
|
workbook.setSheetName(_sheets.size(), sheetname);
|
||||||
_sheets.add(sheet);
|
_sheets.add(sheet);
|
||||||
workbook.setSheetName(_sheets.size() - 1, sheetname);
|
|
||||||
boolean isOnlySheet = _sheets.size() == 1;
|
boolean isOnlySheet = _sheets.size() == 1;
|
||||||
sheet.setSelected(isOnlySheet);
|
sheet.setSelected(isOnlySheet);
|
||||||
sheet.setActive(isOnlySheet);
|
sheet.setActive(isOnlySheet);
|
||||||
@ -788,6 +788,7 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm
|
|||||||
|
|
||||||
public HSSFSheet getSheetAt(int index)
|
public HSSFSheet getSheetAt(int index)
|
||||||
{
|
{
|
||||||
|
validateSheetIndex(index);
|
||||||
return (HSSFSheet) _sheets.get(index);
|
return (HSSFSheet) _sheets.get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ public enum FormulaError {
|
|||||||
/**
|
/**
|
||||||
* @return numeric code of the error
|
* @return numeric code of the error
|
||||||
*/
|
*/
|
||||||
public int getCode() {
|
public byte getCode() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ public enum FormulaError {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Map<String, FormulaError> smap = new HashMap<String, FormulaError>();
|
private static Map<String, FormulaError> smap = new HashMap<String, FormulaError>();
|
||||||
private static Map<Integer, FormulaError> imap = new HashMap<Integer, FormulaError>();
|
private static Map<Byte, FormulaError> imap = new HashMap<Byte, FormulaError>();
|
||||||
static{
|
static{
|
||||||
for (FormulaError error : values()) {
|
for (FormulaError error : values()) {
|
||||||
imap.put(error.getCode(), error);
|
imap.put(error.getCode(), error);
|
||||||
@ -126,7 +126,7 @@ public enum FormulaError {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FormulaError forInt(int type){
|
public static FormulaError forInt(byte type){
|
||||||
FormulaError err = imap.get(type);
|
FormulaError err = imap.get(type);
|
||||||
if(err == null) throw new IllegalArgumentException("Unknown error type: " + type);
|
if(err == null) throw new IllegalArgumentException("Unknown error type: " + type);
|
||||||
return err;
|
return err;
|
||||||
|
@ -224,6 +224,11 @@ public interface Sheet extends Iterable<Row> {
|
|||||||
|
|
||||||
boolean getHorizontallyCenter();
|
boolean getHorizontallyCenter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether printed output for this sheet will be vertically centered.
|
||||||
|
*/
|
||||||
|
boolean getVerticallyCenter();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a merged region of cells (hence letting them free)
|
* Removes a merged region of cells (hence letting them free)
|
||||||
*
|
*
|
||||||
@ -639,20 +644,20 @@ public interface Sheet extends Iterable<Row> {
|
|||||||
* Sets a page break at the indicated column
|
* Sets a page break at the indicated column
|
||||||
* @param column
|
* @param column
|
||||||
*/
|
*/
|
||||||
void setColumnBreak(short column);
|
void setColumnBreak(int column);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines if there is a page break at the indicated column
|
* Determines if there is a page break at the indicated column
|
||||||
* @param column FIXME: Document this!
|
* @param column FIXME: Document this!
|
||||||
* @return FIXME: Document this!
|
* @return FIXME: Document this!
|
||||||
*/
|
*/
|
||||||
boolean isColumnBroken(short column);
|
boolean isColumnBroken(int column);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a page break at the indicated column
|
* Removes a page break at the indicated column
|
||||||
* @param column
|
* @param column
|
||||||
*/
|
*/
|
||||||
void removeColumnBreak(short column);
|
void removeColumnBreak(int column);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Expands or collapses a column group.
|
* Expands or collapses a column group.
|
||||||
@ -761,4 +766,18 @@ public interface Sheet extends Iterable<Row> {
|
|||||||
* @return the parent workbook
|
* @return the parent workbook
|
||||||
*/
|
*/
|
||||||
Workbook getWorkbook();
|
Workbook getWorkbook();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the name of this sheet
|
||||||
|
*
|
||||||
|
* @return the name of this sheet
|
||||||
|
*/
|
||||||
|
String getSheetName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Note - this is not the same as whether the sheet is focused (isActive)
|
||||||
|
* @return <code>true</code> if this sheet is currently selected
|
||||||
|
*/
|
||||||
|
boolean isSelected();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ public interface Workbook {
|
|||||||
* @see Sheet#setSelected(boolean)
|
* @see Sheet#setSelected(boolean)
|
||||||
* @param index the index of the sheet to select (0 based)
|
* @param index the index of the sheet to select (0 based)
|
||||||
*/
|
*/
|
||||||
void setSelectedTab(short index);
|
void setSelectedTab(int index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the sheet name.
|
* Set the sheet name.
|
||||||
|
@ -60,8 +60,7 @@ public final class XSSFCell implements Cell {
|
|||||||
/**
|
/**
|
||||||
* The maximum number of columns in SpreadsheetML
|
* The maximum number of columns in SpreadsheetML
|
||||||
*/
|
*/
|
||||||
public static final int MAX_COLUMN_NUMBER = 16384; // 2^14
|
public static final int LAST_COLUMN_NUMBER = 16384-1; //2^14-1
|
||||||
private static final int LAST_COLUMN_NUMBER = MAX_COLUMN_NUMBER-1;
|
|
||||||
private static final String LAST_COLUMN_NAME = "XFD";
|
private static final String LAST_COLUMN_NAME = "XFD";
|
||||||
|
|
||||||
private static final String FALSE_AS_STRING = "0";
|
private static final String FALSE_AS_STRING = "0";
|
||||||
@ -194,7 +193,6 @@ public final class XSSFCell implements Cell {
|
|||||||
switch(cellType) {
|
switch(cellType) {
|
||||||
case CELL_TYPE_BLANK:
|
case CELL_TYPE_BLANK:
|
||||||
return 0.0;
|
return 0.0;
|
||||||
case CELL_TYPE_ERROR:
|
|
||||||
case CELL_TYPE_FORMULA:
|
case CELL_TYPE_FORMULA:
|
||||||
case CELL_TYPE_NUMERIC:
|
case CELL_TYPE_NUMERIC:
|
||||||
return cell.isSetV() ? Double.parseDouble(cell.getV()) : 0.0;
|
return cell.isSetV() ? Double.parseDouble(cell.getV()) : 0.0;
|
||||||
@ -708,7 +706,7 @@ public final class XSSFCell implements Cell {
|
|||||||
CTCellFormula f = CTCellFormula.Factory.newInstance();
|
CTCellFormula f = CTCellFormula.Factory.newInstance();
|
||||||
f.setStringValue("0");
|
f.setStringValue("0");
|
||||||
cell.setF(f);
|
cell.setF(f);
|
||||||
cell.unsetT();
|
if(cell.isSetT()) cell.unsetT();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -18,6 +18,7 @@ package org.apache.poi.xssf.usermodel;
|
|||||||
|
|
||||||
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.*;
|
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.*;
|
||||||
import org.openxmlformats.schemas.drawingml.x2006.main.*;
|
import org.openxmlformats.schemas.drawingml.x2006.main.*;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.apache.poi.ss.usermodel.Picture;
|
import org.apache.poi.ss.usermodel.Picture;
|
||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
@ -43,6 +44,15 @@ import java.util.Iterator;
|
|||||||
public class XSSFPicture extends XSSFShape implements Picture {
|
public class XSSFPicture extends XSSFShape implements Picture {
|
||||||
private static final POILogger logger = POILogFactory.getLogger(XSSFPicture.class);
|
private static final POILogger logger = POILogFactory.getLogger(XSSFPicture.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Column width measured as the number of characters of the maximum digit width of the
|
||||||
|
* numbers 0, 1, 2, ..., 9 as rendered in the normal style's font. There are 4 pixels of margin
|
||||||
|
* padding (two on each side), plus 1 pixel padding for the gridlines.
|
||||||
|
*
|
||||||
|
* This value is the same for default font in Office 2007 (Calibry) and Office 2003 and earlier (Arial)
|
||||||
|
*/
|
||||||
|
private static float DEFAULT_COLUMN_WIDTH = 9.140625f;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A default instance of CTShape used for creating new shapes.
|
* A default instance of CTShape used for creating new shapes.
|
||||||
*/
|
*/
|
||||||
@ -230,9 +240,11 @@ public class XSSFPicture extends XSSFShape implements Picture {
|
|||||||
|
|
||||||
private float getColumnWidthInPixels(int columnIndex){
|
private float getColumnWidthInPixels(int columnIndex){
|
||||||
XSSFSheet sheet = (XSSFSheet)getDrawing().getParent();
|
XSSFSheet sheet = (XSSFSheet)getDrawing().getParent();
|
||||||
float numChars = (float)sheet.getColumnWidth(columnIndex)/256;
|
|
||||||
|
|
||||||
return numChars*XSSFWorkbook.DEFAULT_CHARACTER_WIDTH;
|
CTCol col = sheet.getColumnHelper().getColumn(columnIndex, false);
|
||||||
|
double numChars = col == null || !col.isSetWidth() ? DEFAULT_COLUMN_WIDTH : col.getWidth();
|
||||||
|
|
||||||
|
return (float)numChars*XSSFWorkbook.DEFAULT_CHARACTER_WIDTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
private float getRowHeightInPixels(int rowIndex){
|
private float getRowHeightInPixels(int rowIndex){
|
||||||
|
@ -45,7 +45,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
|||||||
/**
|
/**
|
||||||
* The maximum number of rows in SpreadsheetML
|
* The maximum number of rows in SpreadsheetML
|
||||||
*/
|
*/
|
||||||
public static final int MAX_ROW_NUMBER = 1048576; //2 ^ 20
|
public static final int MAX_ROW_NUMBER = 1048575; //2 ^ 20 - 1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the xml bean containing all cell definitions for this row
|
* the xml bean containing all cell definitions for this row
|
||||||
@ -170,8 +170,6 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
|||||||
* @see Cell#CELL_TYPE_STRING
|
* @see Cell#CELL_TYPE_STRING
|
||||||
*/
|
*/
|
||||||
public XSSFCell createCell(int columnIndex, int type) {
|
public XSSFCell createCell(int columnIndex, int type) {
|
||||||
if(columnIndex < 0) throw new IllegalArgumentException("columnIndex must be >= 0, was " + columnIndex);
|
|
||||||
|
|
||||||
CTCell ctcell = CTCell.Factory.newInstance();
|
CTCell ctcell = CTCell.Factory.newInstance();
|
||||||
XSSFCell xcell = new XSSFCell(this, ctcell);
|
XSSFCell xcell = new XSSFCell(this, ctcell);
|
||||||
xcell.setCellNum(columnIndex);
|
xcell.setCellNum(columnIndex);
|
||||||
@ -333,10 +331,9 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
|||||||
* @throws IllegalArgumentException if rowNum < 0 or greater than {@link #MAX_ROW_NUMBER}
|
* @throws IllegalArgumentException if rowNum < 0 or greater than {@link #MAX_ROW_NUMBER}
|
||||||
*/
|
*/
|
||||||
public void setRowNum(int rowIndex) {
|
public void setRowNum(int rowIndex) {
|
||||||
if (rowIndex < 0 || rowIndex >= MAX_ROW_NUMBER) {
|
if (rowIndex < 0 || rowIndex > MAX_ROW_NUMBER) {
|
||||||
throw new IllegalArgumentException("Invalid row index (" + rowIndex
|
throw new IllegalArgumentException("Invalid row number (" + rowIndex
|
||||||
+ "). Allowable row range for " + FILE_FORMAT_NAME
|
+ ") outside allowable range (0.." + MAX_ROW_NUMBER + ")");
|
||||||
+ " is (0.." + (MAX_ROW_NUMBER-1) + ")");
|
|
||||||
}
|
}
|
||||||
row.setR(rowIndex + 1);
|
row.setR(rowIndex + 1);
|
||||||
}
|
}
|
||||||
|
@ -64,15 +64,6 @@ import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelations
|
|||||||
public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
||||||
private static final POILogger logger = POILogFactory.getLogger(XSSFSheet.class);
|
private static final POILogger logger = POILogFactory.getLogger(XSSFSheet.class);
|
||||||
|
|
||||||
/**
|
|
||||||
* Column width measured as the number of characters of the maximum digit width of the
|
|
||||||
* numbers 0, 1, 2, ..., 9 as rendered in the normal style's font. There are 4 pixels of margin
|
|
||||||
* padding (two on each side), plus 1 pixel padding for the gridlines.
|
|
||||||
*
|
|
||||||
* This value is the same for default font in Office 2007 (Calibry) and Office 2003 and earlier (Arial)
|
|
||||||
*/
|
|
||||||
private static float DEFAULT_COLUMN_WIDTH = 9.140625f;
|
|
||||||
|
|
||||||
protected CTSheet sheet;
|
protected CTSheet sheet;
|
||||||
protected CTWorksheet worksheet;
|
protected CTWorksheet worksheet;
|
||||||
private TreeMap<Integer, XSSFRow> rows;
|
private TreeMap<Integer, XSSFRow> rows;
|
||||||
@ -462,7 +453,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
*/
|
*/
|
||||||
public int getColumnWidth(int columnIndex) {
|
public int getColumnWidth(int columnIndex) {
|
||||||
CTCol col = columnHelper.getColumn(columnIndex, false);
|
CTCol col = columnHelper.getColumn(columnIndex, false);
|
||||||
double width = col == null || !col.isSetWidth() ? DEFAULT_COLUMN_WIDTH : col.getWidth();
|
double width = col == null || !col.isSetWidth() ? getDefaultColumnWidth() : col.getWidth();
|
||||||
return (int)(width*256);
|
return (int)(width*256);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -512,8 +503,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
* set for that column
|
* set for that column
|
||||||
*/
|
*/
|
||||||
public CellStyle getColumnStyle(int column) {
|
public CellStyle getColumnStyle(int column) {
|
||||||
// TODO
|
int idx = columnHelper.getColDefaultStyle(column);
|
||||||
return null;
|
return getWorkbook().getCellStyleAt((short)(idx == -1 ? 0 : idx));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -568,7 +559,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
* @return the number of the first logical row on the sheet, zero based
|
* @return the number of the first logical row on the sheet, zero based
|
||||||
*/
|
*/
|
||||||
public int getFirstRowNum() {
|
public int getFirstRowNum() {
|
||||||
return rows.size() == 0 ? -1 : rows.firstKey();
|
return rows.size() == 0 ? 0 : rows.firstKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -681,7 +672,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getLastRowNum() {
|
public int getLastRowNum() {
|
||||||
return rows.size() == 0 ? -1 : rows.lastKey();
|
return rows.size() == 0 ? 0 : rows.lastKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getLeftCol() {
|
public short getLeftCol() {
|
||||||
@ -720,7 +711,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
case FooterMargin:
|
case FooterMargin:
|
||||||
return pageMargins.getFooter();
|
return pageMargins.getFooter();
|
||||||
default :
|
default :
|
||||||
throw new POIXMLException("Unknown margin constant: " + margin);
|
throw new IllegalArgumentException("Unknown margin constant: " + margin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -742,16 +733,24 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
switch (margin) {
|
switch (margin) {
|
||||||
case LeftMargin:
|
case LeftMargin:
|
||||||
pageMargins.setLeft(size);
|
pageMargins.setLeft(size);
|
||||||
|
break;
|
||||||
case RightMargin:
|
case RightMargin:
|
||||||
pageMargins.setRight(size);
|
pageMargins.setRight(size);
|
||||||
|
break;
|
||||||
case TopMargin:
|
case TopMargin:
|
||||||
pageMargins.setTop(size);
|
pageMargins.setTop(size);
|
||||||
|
break;
|
||||||
case BottomMargin:
|
case BottomMargin:
|
||||||
pageMargins.setBottom(size);
|
pageMargins.setBottom(size);
|
||||||
|
break;
|
||||||
case HeaderMargin:
|
case HeaderMargin:
|
||||||
pageMargins.setHeader(size);
|
pageMargins.setHeader(size);
|
||||||
|
break;
|
||||||
case FooterMargin:
|
case FooterMargin:
|
||||||
pageMargins.setFooter(size);
|
pageMargins.setFooter(size);
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
throw new IllegalArgumentException( "Unknown margin constant: " + margin );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1033,7 +1032,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
/**
|
/**
|
||||||
* Determines if there is a page break at the indicated column
|
* Determines if there is a page break at the indicated column
|
||||||
*/
|
*/
|
||||||
public boolean isColumnBroken(short column) {
|
public boolean isColumnBroken(int column) {
|
||||||
int[] colBreaks = getColumnBreaks();
|
int[] colBreaks = getColumnBreaks();
|
||||||
for (int i = 0 ; i < colBreaks.length ; i++) {
|
for (int i = 0 ; i < colBreaks.length ; i++) {
|
||||||
if (colBreaks[i] == column) {
|
if (colBreaks[i] == column) {
|
||||||
@ -1167,7 +1166,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
/**
|
/**
|
||||||
* Removes a page break at the indicated column
|
* Removes a page break at the indicated column
|
||||||
*/
|
*/
|
||||||
public void removeColumnBreak(short column) {
|
public void removeColumnBreak(int column) {
|
||||||
CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray();
|
CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray();
|
||||||
for (int i = 0 ; i < brkArray.length ; i++) {
|
for (int i = 0 ; i < brkArray.length ; i++) {
|
||||||
if (brkArray[i].getId() == column) {
|
if (brkArray[i].getId() == column) {
|
||||||
@ -1202,6 +1201,10 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
* @param row the row to remove.
|
* @param row the row to remove.
|
||||||
*/
|
*/
|
||||||
public void removeRow(Row row) {
|
public void removeRow(Row row) {
|
||||||
|
if (row.getSheet() != this) {
|
||||||
|
throw new IllegalArgumentException("Specified row does not belong to this sheet");
|
||||||
|
}
|
||||||
|
|
||||||
rows.remove(row.getRowNum());
|
rows.remove(row.getRowNum());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1263,7 +1266,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
*
|
*
|
||||||
* @param column the column to break
|
* @param column the column to break
|
||||||
*/
|
*/
|
||||||
public void setColumnBreak(short column) {
|
public void setColumnBreak(int column) {
|
||||||
if (! isColumnBroken(column)) {
|
if (! isColumnBroken(column)) {
|
||||||
CTBreak brk = getSheetTypeColumnBreaks().addNewBrk();
|
CTBreak brk = getSheetTypeColumnBreaks().addNewBrk();
|
||||||
brk.setId(column);
|
brk.setId(column);
|
||||||
|
@ -60,17 +60,7 @@ import org.apache.xmlbeans.XmlException;
|
|||||||
import org.apache.xmlbeans.XmlObject;
|
import org.apache.xmlbeans.XmlObject;
|
||||||
import org.apache.xmlbeans.XmlOptions;
|
import org.apache.xmlbeans.XmlOptions;
|
||||||
import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
|
import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookView;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookViews;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedNames;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookPr;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STSheetState;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* High level representation of a SpreadsheetML workbook. This is the first object most users
|
* High level representation of a SpreadsheetML workbook. This is the first object most users
|
||||||
@ -445,7 +435,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
|||||||
* @return XSSFSheet representing the new sheet.
|
* @return XSSFSheet representing the new sheet.
|
||||||
*/
|
*/
|
||||||
public XSSFSheet createSheet() {
|
public XSSFSheet createSheet() {
|
||||||
String sheetname = "Sheet" + (sheets.size() + 1);
|
String sheetname = "Sheet" + (sheets.size());
|
||||||
return createSheet(sheetname);
|
return createSheet(sheetname);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -777,6 +767,8 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
|||||||
public void removeSheetAt(int index) {
|
public void removeSheetAt(int index) {
|
||||||
validateSheetIndex(index);
|
validateSheetIndex(index);
|
||||||
|
|
||||||
|
XSSFSheet sheet = getSheetAt(index);
|
||||||
|
removeRelation(sheet);
|
||||||
this.sheets.remove(index);
|
this.sheets.remove(index);
|
||||||
this.workbook.getSheets().removeSheet(index);
|
this.workbook.getSheets().removeSheet(index);
|
||||||
}
|
}
|
||||||
@ -1009,7 +1001,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
|||||||
/**
|
/**
|
||||||
* We only set one sheet as selected for compatibility with HSSF.
|
* We only set one sheet as selected for compatibility with HSSF.
|
||||||
*/
|
*/
|
||||||
public void setSelectedTab(short index) {
|
public void setSelectedTab(int index) {
|
||||||
for (int i = 0 ; i < sheets.size() ; ++i) {
|
for (int i = 0 ; i < sheets.size() ; ++i) {
|
||||||
XSSFSheet sheet = sheets.get(i);
|
XSSFSheet sheet = sheets.get(i);
|
||||||
sheet.setSelected(i == index);
|
sheet.setSelected(i == index);
|
||||||
@ -1042,10 +1034,16 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
|||||||
int idx = getSheetIndex(sheetname);
|
int idx = getSheetIndex(sheetname);
|
||||||
sheets.add(pos, sheets.remove(idx));
|
sheets.add(pos, sheets.remove(idx));
|
||||||
// Reorder CTSheets
|
// Reorder CTSheets
|
||||||
XmlObject cts = workbook.getSheets().getSheetArray(idx).copy();
|
CTSheets ct = workbook.getSheets();
|
||||||
|
XmlObject cts = ct.getSheetArray(idx).copy();
|
||||||
workbook.getSheets().removeSheet(idx);
|
workbook.getSheets().removeSheet(idx);
|
||||||
CTSheet newcts = workbook.getSheets().insertNewSheet(pos);
|
CTSheet newcts = ct.insertNewSheet(pos);
|
||||||
newcts.set(cts);
|
newcts.set(cts);
|
||||||
|
|
||||||
|
//notify sheets
|
||||||
|
for(int i=0; i < sheets.size(); i++) {
|
||||||
|
sheets.get(i).sheet = ct.getSheetArray(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,27 +31,8 @@ public final class TestXSSFCell extends BaseTestCell {
|
|||||||
return XSSFITestDataProvider.getInstance();
|
return XSSFITestDataProvider.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSetValues() {
|
|
||||||
baseTestSetValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testBoolErr() {
|
|
||||||
baseTestBoolErr();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testFormulaStyle() {
|
|
||||||
baseTestFormulaStyle();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testToString() {
|
|
||||||
baseTestToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSetFormulaValue() {
|
|
||||||
baseTestSetFormulaValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testChangeCellType() {
|
public void testChangeCellType() {
|
||||||
|
//for performance reasons combine baseTestChangeType* together
|
||||||
Workbook wb = getTestDataProvider().createWorkbook();
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
Row row = wb.createSheet().createRow(0);
|
Row row = wb.createSheet().createRow(0);
|
||||||
baseTestChangeTypeStringToBool(row.createCell(0));
|
baseTestChangeTypeStringToBool(row.createCell(0));
|
||||||
@ -62,6 +43,4 @@ public final class TestXSSFCell extends BaseTestCell {
|
|||||||
//TODO: works in HSSF but fails in XSSF
|
//TODO: works in HSSF but fails in XSSF
|
||||||
//baseTestChangeTypeFormulaToBoolean(row.createCell(4));
|
//baseTestChangeTypeFormulaToBoolean(row.createCell(4));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -66,48 +66,7 @@ public class TestXSSFDialogSheet extends TestCase {
|
|||||||
assertFalse(sheet.getFitToPage());
|
assertFalse(sheet.getFitToPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetSetMargin() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
|
|
||||||
assertEquals((double) 0, sheet.getMargin((short) 0));
|
|
||||||
sheet.setMargin((short) 0, 10);
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 0));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 1));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 2));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 1, 11);
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 1));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 2));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 2, 12);
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 2));
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 3, 13);
|
|
||||||
assertEquals((double) 13, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 13, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 13, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 4, 14);
|
|
||||||
assertEquals((double) 14, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 14, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 5, 15);
|
|
||||||
assertEquals((double) 15, sheet.getMargin((short) 5));
|
|
||||||
|
|
||||||
// Test that nothing happens if another margin constant is given (E.G. 65)
|
|
||||||
sheet.setMargin((short) 65, 15);
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 0));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 1));
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 2));
|
|
||||||
assertEquals((double) 13, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 14, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 15, sheet.getMargin((short) 5));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetFooter() {
|
public void testGetFooter() {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
|
XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
@ -18,144 +18,17 @@ package org.apache.poi.xssf.usermodel;
|
|||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
|
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
|
import org.apache.poi.ss.usermodel.BaseTestNamedRange;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Yegor Kozlov
|
* @author Yegor Kozlov
|
||||||
*/
|
*/
|
||||||
public class TestXSSFName extends TestCase {
|
public class TestXSSFName extends BaseTestNamedRange {
|
||||||
|
|
||||||
public void testCreate(){
|
@Override
|
||||||
// Create a new workbook
|
protected XSSFITestDataProvider getTestDataProvider(){
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
return XSSFITestDataProvider.getInstance();
|
||||||
|
|
||||||
XSSFName name1 = wb.createName();
|
|
||||||
name1.setNameName("testOne");
|
|
||||||
|
|
||||||
//setting a duplicate name should throw IllegalArgumentException
|
|
||||||
XSSFName name2 = wb.createName();
|
|
||||||
try {
|
|
||||||
name2.setNameName("testOne");
|
|
||||||
fail("expected exception");
|
|
||||||
} catch (IllegalArgumentException e){
|
|
||||||
assertEquals("The workbook already contains this name: testOne", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
name2.setNameName("testTwo");
|
|
||||||
|
|
||||||
String ref1 = "Test1!$A$1:$B$1";
|
|
||||||
name1.setRefersToFormula(ref1);
|
|
||||||
assertEquals(ref1, name1.getRefersToFormula());
|
|
||||||
assertEquals("Test1", name1.getSheetName());
|
|
||||||
|
|
||||||
String ref2 = "'Testing Named Ranges'!$A$1:$B$1";
|
|
||||||
name1.setRefersToFormula(ref2);
|
|
||||||
assertEquals("'Testing Named Ranges'!$A$1:$B$1", name1.getRefersToFormula());
|
|
||||||
assertEquals("Testing Named Ranges", name1.getSheetName());
|
|
||||||
|
|
||||||
assertEquals(-1, name1.getSheetIndex());
|
|
||||||
name1.setSheetIndex(-1);
|
|
||||||
assertEquals(-1, name1.getSheetIndex());
|
|
||||||
try {
|
|
||||||
name1.setSheetIndex(1);
|
|
||||||
fail("should throw IllegalArgumentException");
|
|
||||||
} catch(IllegalArgumentException e){
|
|
||||||
assertEquals("Sheet index (1) is out of range", e.getMessage());
|
|
||||||
}
|
|
||||||
wb.createSheet();
|
|
||||||
try {
|
|
||||||
name1.setSheetIndex(1);
|
|
||||||
fail("should throw IllegalArgumentException");
|
|
||||||
} catch(IllegalArgumentException e){
|
|
||||||
assertEquals("Sheet index (1) is out of range (0..0)", e.getMessage());
|
|
||||||
}
|
|
||||||
wb.createSheet();
|
|
||||||
name1.setSheetIndex(1);
|
|
||||||
assertEquals(1, name1.getSheetIndex());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testUnicodeNamedRange() {
|
|
||||||
XSSFWorkbook workBook = new XSSFWorkbook();
|
|
||||||
workBook.createSheet("Test");
|
|
||||||
XSSFName name = workBook.createName();
|
|
||||||
name.setNameName("\u03B1");
|
|
||||||
name.setRefersToFormula("Test!$D$3:$E$8");
|
|
||||||
|
|
||||||
|
|
||||||
XSSFWorkbook workBook2 = XSSFTestDataSamples.writeOutAndReadBack(workBook);
|
|
||||||
XSSFName name2 = workBook2.getNameAt(0);
|
|
||||||
|
|
||||||
assertEquals("\u03B1", name2.getNameName());
|
|
||||||
assertEquals("Test!$D$3:$E$8", name2.getRefersToFormula());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testAddRemove() {
|
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
|
||||||
assertEquals(0, wb.getNumberOfNames());
|
|
||||||
XSSFName name1 = wb.createName();
|
|
||||||
name1.setNameName("name1");
|
|
||||||
assertEquals(1, wb.getNumberOfNames());
|
|
||||||
|
|
||||||
XSSFName name2 = wb.createName();
|
|
||||||
name2.setNameName("name2");
|
|
||||||
assertEquals(2, wb.getNumberOfNames());
|
|
||||||
|
|
||||||
XSSFName name3 = wb.createName();
|
|
||||||
name3.setNameName("name3");
|
|
||||||
assertEquals(3, wb.getNumberOfNames());
|
|
||||||
|
|
||||||
wb.removeName("name2");
|
|
||||||
assertEquals(2, wb.getNumberOfNames());
|
|
||||||
|
|
||||||
wb.removeName(0);
|
|
||||||
assertEquals(1, wb.getNumberOfNames());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testScope() {
|
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
|
||||||
wb.createSheet();
|
|
||||||
wb.createSheet();
|
|
||||||
|
|
||||||
XSSFName name;
|
|
||||||
|
|
||||||
name = wb.createName();
|
|
||||||
name.setNameName("aaa");
|
|
||||||
name = wb.createName();
|
|
||||||
try {
|
|
||||||
name.setNameName("aaa");
|
|
||||||
fail("Expected exception");
|
|
||||||
} catch(Exception e){
|
|
||||||
assertEquals("The workbook already contains this name: aaa", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
name = wb.createName();
|
|
||||||
name.setSheetIndex(0);
|
|
||||||
name.setNameName("aaa");
|
|
||||||
name = wb.createName();
|
|
||||||
name.setSheetIndex(0);
|
|
||||||
try {
|
|
||||||
name.setNameName("aaa");
|
|
||||||
fail("Expected exception");
|
|
||||||
} catch(Exception e){
|
|
||||||
assertEquals("The sheet already contains this name: aaa", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
name = wb.createName();
|
|
||||||
name.setSheetIndex(1);
|
|
||||||
name.setNameName("aaa");
|
|
||||||
name = wb.createName();
|
|
||||||
name.setSheetIndex(1);
|
|
||||||
try {
|
|
||||||
name.setNameName("aaa");
|
|
||||||
fail("Expected exception");
|
|
||||||
} catch(Exception e){
|
|
||||||
assertEquals("The sheet already contains this name: aaa", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
int cnt = 0;
|
|
||||||
for (int i = 0; i < wb.getNumberOfNames(); i++) {
|
|
||||||
if("aaa".equals(wb.getNameAt(i).getNameName())) cnt++;
|
|
||||||
}
|
|
||||||
assertEquals(3, cnt);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,12 +23,10 @@ import java.util.Iterator;
|
|||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
|
||||||
import org.apache.poi.xssf.model.SharedStringsTable;
|
import org.apache.poi.xssf.model.SharedStringsTable;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
|
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFRow;
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
@ -37,303 +35,18 @@ import org.apache.poi.hssf.usermodel.HSSFCell;
|
|||||||
/**
|
/**
|
||||||
* Tests for XSSFRow
|
* Tests for XSSFRow
|
||||||
*/
|
*/
|
||||||
public final class TestXSSFRow extends TestCase {
|
public final class TestXSSFRow extends BaseTestRow {
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Test adding cells to a row in various places and see if we can find them again.
|
protected XSSFITestDataProvider getTestDataProvider(){
|
||||||
*/
|
return XSSFITestDataProvider.getInstance();
|
||||||
public void testAddAndIterateCells() {
|
|
||||||
XSSFSheet sheet = createParentObjects();
|
|
||||||
XSSFRow row = sheet.createRow(0);
|
|
||||||
|
|
||||||
// One cell at the beginning
|
|
||||||
Cell cell1 = row.createCell((short) 1);
|
|
||||||
Iterator<Cell> it = row.cellIterator();
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell1 == it.next());
|
|
||||||
assertFalse(it.hasNext());
|
|
||||||
|
|
||||||
// Add another cell at the end
|
|
||||||
Cell cell2 = row.createCell((short) 99);
|
|
||||||
it = row.cellIterator();
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell1 == it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell2 == it.next());
|
|
||||||
|
|
||||||
// Add another cell at the beginning
|
|
||||||
Cell cell3 = row.createCell((short) 0);
|
|
||||||
it = row.cellIterator();
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell3 == it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell1 == it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell2 == it.next());
|
|
||||||
|
|
||||||
// Replace cell1
|
|
||||||
Cell cell4 = row.createCell((short) 1);
|
|
||||||
it = row.cellIterator();
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell3 == it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell4 == it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell2 == it.next());
|
|
||||||
assertFalse(it.hasNext());
|
|
||||||
|
|
||||||
// Add another cell, specifying the cellType
|
|
||||||
Cell cell5 = row.createCell((short) 2, Cell.CELL_TYPE_STRING);
|
|
||||||
it = row.cellIterator();
|
|
||||||
assertNotNull(cell5);
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell3 == it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell4 == it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell5 == it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertTrue(cell2 == it.next());
|
|
||||||
assertEquals(Cell.CELL_TYPE_STRING, cell5.getCellType());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetCell() {
|
public void testRowBounds() {
|
||||||
XSSFRow row = getSampleRow();
|
baseTestRowBounds(XSSFRow.MAX_ROW_NUMBER);
|
||||||
|
|
||||||
assertNotNull(row.getCell((short) 2));
|
|
||||||
assertNotNull(row.getCell((short) 3));
|
|
||||||
assertNotNull(row.getCell((short) 4));
|
|
||||||
// cell3 may have been created as CELL_TYPE_NUMERIC, but since there is no numeric
|
|
||||||
// value set yet, its cell type is classified as 'blank'
|
|
||||||
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell((short) 3).getCellType());
|
|
||||||
assertNull(row.getCell((short) 5));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetPhysicalNumberOfCells() {
|
public void testCellBounds() {
|
||||||
XSSFRow row = getSampleRow();
|
baseTestCellBounds(XSSFCell.LAST_COLUMN_NUMBER);
|
||||||
assertEquals(7, row.getPhysicalNumberOfCells());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetFirstCellNum() {
|
|
||||||
// Test a row with some cells
|
|
||||||
XSSFRow row = getSampleRow();
|
|
||||||
assertFalse(row.getFirstCellNum() == (short) 0);
|
|
||||||
assertEquals((short) 2, row.getFirstCellNum());
|
|
||||||
|
|
||||||
// Test after removing the first cell
|
|
||||||
Cell cell = row.getCell((short) 2);
|
|
||||||
row.removeCell(cell);
|
|
||||||
assertFalse(row.getFirstCellNum() == (short) 2);
|
|
||||||
|
|
||||||
// Test a row without cells
|
|
||||||
XSSFSheet sheet = createParentObjects();
|
|
||||||
XSSFRow emptyRow = sheet.createRow(0);
|
|
||||||
assertEquals(-1, emptyRow.getFirstCellNum());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetHeight() {
|
|
||||||
XSSFRow row = getSampleRow();
|
|
||||||
// I assume that "ht" attribute value is in 'points', please verify that
|
|
||||||
// Test that no rowHeight is set
|
|
||||||
assertEquals(row.getSheet().getDefaultRowHeight(), row.getHeight());
|
|
||||||
// Set a rowHeight and test the new value
|
|
||||||
row.setHeight((short) 240);
|
|
||||||
assertEquals((short) 240.0, row.getHeight());
|
|
||||||
assertEquals(12.0f, row.getHeightInPoints());
|
|
||||||
// Set a new rowHeight in points and test the new value
|
|
||||||
row.setHeightInPoints(13);
|
|
||||||
assertEquals((float) 13.0, row.getHeightInPoints());
|
|
||||||
assertEquals((short)(13.0*20), row.getHeight());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetZeroHeight() throws Exception {
|
|
||||||
XSSFRow row = getSampleRow();
|
|
||||||
assertFalse(row.getZeroHeight());
|
|
||||||
row.setZeroHeight(true);
|
|
||||||
assertTrue(row.getZeroHeight());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for the missing/blank cell policy stuff
|
|
||||||
*/
|
|
||||||
public void testGetCellPolicy() throws Exception {
|
|
||||||
XSSFSheet sheet = createParentObjects();
|
|
||||||
XSSFRow row = sheet.createRow(0);
|
|
||||||
|
|
||||||
// 0 -> string
|
|
||||||
// 1 -> num
|
|
||||||
// 2 missing
|
|
||||||
// 3 missing
|
|
||||||
// 4 -> blank
|
|
||||||
// 5 -> num
|
|
||||||
row.createCell((short)0).setCellValue(new XSSFRichTextString("test"));
|
|
||||||
row.createCell((short)1).setCellValue(3.2);
|
|
||||||
row.createCell((short)4, Cell.CELL_TYPE_BLANK);
|
|
||||||
row.createCell((short)5).setCellValue(4);
|
|
||||||
|
|
||||||
// First up, no policy
|
|
||||||
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());
|
|
||||||
assertEquals(null, row.getCell(2));
|
|
||||||
assertEquals(null, row.getCell(3));
|
|
||||||
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType());
|
|
||||||
|
|
||||||
// RETURN_NULL_AND_BLANK - same as default
|
|
||||||
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, Row.RETURN_NULL_AND_BLANK).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, Row.RETURN_NULL_AND_BLANK).getCellType());
|
|
||||||
assertEquals(null, row.getCell(2, Row.RETURN_NULL_AND_BLANK));
|
|
||||||
assertEquals(null, row.getCell(3, Row.RETURN_NULL_AND_BLANK));
|
|
||||||
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4, Row.RETURN_NULL_AND_BLANK).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, Row.RETURN_NULL_AND_BLANK).getCellType());
|
|
||||||
|
|
||||||
// RETURN_BLANK_AS_NULL - nearly the same
|
|
||||||
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, XSSFRow.RETURN_BLANK_AS_NULL).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, XSSFRow.RETURN_BLANK_AS_NULL).getCellType());
|
|
||||||
assertEquals(null, row.getCell(2, XSSFRow.RETURN_BLANK_AS_NULL));
|
|
||||||
assertEquals(null, row.getCell(3, XSSFRow.RETURN_BLANK_AS_NULL));
|
|
||||||
assertEquals(null, row.getCell(4, XSSFRow.RETURN_BLANK_AS_NULL));
|
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, XSSFRow.RETURN_BLANK_AS_NULL).getCellType());
|
|
||||||
|
|
||||||
// CREATE_NULL_AS_BLANK - creates as needed
|
|
||||||
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(2, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(3, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
|
|
||||||
// Check created ones get the right column
|
|
||||||
assertEquals((short)0, row.getCell(0, XSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals((short)1, row.getCell(1, XSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals((short)2, row.getCell(2, XSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals((short)3, row.getCell(3, XSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals((short)4, row.getCell(4, XSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals((short)5, row.getCell(5, XSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method that returns a row with some sample cells
|
|
||||||
* @return row
|
|
||||||
*/
|
|
||||||
private static XSSFRow getSampleRow() {
|
|
||||||
XSSFSheet sheet = createParentObjects();
|
|
||||||
XSSFRow row = sheet.createRow(0);
|
|
||||||
row.createCell((short) 2);
|
|
||||||
row.createCell((short) 3, Cell.CELL_TYPE_NUMERIC);
|
|
||||||
row.createCell((short) 4);
|
|
||||||
row.createCell((short) 6);
|
|
||||||
row.createCell((short) 7);
|
|
||||||
row.createCell((short) 8);
|
|
||||||
row.createCell((short) 100);
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static XSSFSheet createParentObjects() {
|
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
|
||||||
return wb.createSheet();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test that XSSFRow.getLastCellNum is consistent with HSSFRow.getLastCellNum
|
|
||||||
*/
|
|
||||||
public void testLastCellNum() {
|
|
||||||
HSSFWorkbook wb1 = new HSSFWorkbook();
|
|
||||||
XSSFWorkbook wb2 = new XSSFWorkbook();
|
|
||||||
|
|
||||||
HSSFSheet sheet1 = wb1.createSheet();
|
|
||||||
XSSFSheet sheet2 = wb2.createSheet();
|
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
|
||||||
HSSFRow row1 = sheet1.createRow(i);
|
|
||||||
XSSFRow row2 = sheet2.createRow(i);
|
|
||||||
|
|
||||||
for (int j = 0; j < 5; j++) {
|
|
||||||
//before adding a cell
|
|
||||||
assertEquals(row1.getLastCellNum(), row2.getLastCellNum());
|
|
||||||
|
|
||||||
HSSFCell cell1 = row1.createCell(j);
|
|
||||||
XSSFCell cell2 = row2.createCell(j);
|
|
||||||
|
|
||||||
//after adding a cell
|
|
||||||
assertEquals(row1.getLastCellNum(), row2.getLastCellNum());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRemoveCell() {
|
|
||||||
XSSFRow row = getSampleRow();
|
|
||||||
|
|
||||||
// Test removing the first cell
|
|
||||||
Cell firstCell = row.getCell((short) 2);
|
|
||||||
assertNotNull(firstCell);
|
|
||||||
assertEquals(7, row.getPhysicalNumberOfCells());
|
|
||||||
row.removeCell(firstCell);
|
|
||||||
assertEquals(6, row.getPhysicalNumberOfCells());
|
|
||||||
firstCell = row.getCell((short) 2);
|
|
||||||
assertNull(firstCell);
|
|
||||||
|
|
||||||
// Test removing the last cell
|
|
||||||
Cell lastCell = row.getCell((short) 100);
|
|
||||||
row.removeCell(lastCell);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testFirstLastCellNum() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet();
|
|
||||||
XSSFRow row = sheet.createRow(0);
|
|
||||||
assertEquals(-1, row.getLastCellNum());
|
|
||||||
assertEquals(-1, row.getFirstCellNum());
|
|
||||||
row.createCell(1);
|
|
||||||
assertEquals(2, row.getLastCellNum());
|
|
||||||
assertEquals(1, row.getFirstCellNum());
|
|
||||||
row.createCell(3);
|
|
||||||
assertEquals(4, row.getLastCellNum());
|
|
||||||
assertEquals(1, row.getFirstCellNum());
|
|
||||||
row.removeCell(row.getCell(3));
|
|
||||||
assertEquals(2, row.getLastCellNum());
|
|
||||||
assertEquals(1, row.getFirstCellNum());
|
|
||||||
row.removeCell(row.getCell(1));
|
|
||||||
assertEquals(-1, row.getLastCellNum());
|
|
||||||
assertEquals(-1, row.getFirstCellNum());
|
|
||||||
|
|
||||||
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
|
|
||||||
sheet = workbook.getSheetAt(0);
|
|
||||||
|
|
||||||
assertEquals(-1, sheet.getRow(0).getLastCellNum());
|
|
||||||
assertEquals(-1, sheet.getRow(0).getFirstCellNum());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRowHeightCompatibility(){
|
|
||||||
Workbook wb1 = new HSSFWorkbook();
|
|
||||||
Workbook wb2 = new XSSFWorkbook();
|
|
||||||
|
|
||||||
Sheet sh1 = wb1.createSheet();
|
|
||||||
Sheet sh2 = wb2.createSheet();
|
|
||||||
|
|
||||||
sh2.setDefaultRowHeight(sh1.getDefaultRowHeight());
|
|
||||||
|
|
||||||
assertEquals(sh1.getDefaultRowHeight(), sh2.getDefaultRowHeight());
|
|
||||||
|
|
||||||
//junit.framework.AssertionFailedError: expected:<12.0> but was:<12.75>
|
|
||||||
//YK: there is a bug in HSSF version, it trunkates decimal part
|
|
||||||
//assertEquals(sh1.getDefaultRowHeightInPoints(), sh2.getDefaultRowHeightInPoints());
|
|
||||||
|
|
||||||
Row row1 = sh1.createRow(0);
|
|
||||||
Row row2 = sh2.createRow(0);
|
|
||||||
|
|
||||||
assertEquals(row1.getHeight(), row2.getHeight());
|
|
||||||
assertEquals(row1.getHeightInPoints(), row2.getHeightInPoints());
|
|
||||||
row1.setHeight((short)100);
|
|
||||||
row2.setHeight((short)100);
|
|
||||||
assertEquals(row1.getHeight(), row2.getHeight());
|
|
||||||
assertEquals(row1.getHeightInPoints(), row2.getHeightInPoints());
|
|
||||||
|
|
||||||
row1.setHeightInPoints(25.5f);
|
|
||||||
row2.setHeightInPoints(25.5f);
|
|
||||||
assertEquals(row1.getHeight(), row2.getHeight());
|
|
||||||
assertEquals(row1.getHeightInPoints(), row2.getHeightInPoints());
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,124 +20,36 @@ package org.apache.poi.xssf.usermodel;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
|
||||||
import org.apache.poi.ss.util.CellRangeAddress;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
import org.apache.poi.xssf.model.CommentsTable;
|
import org.apache.poi.xssf.model.CommentsTable;
|
||||||
import org.apache.poi.xssf.model.StylesTable;
|
import org.apache.poi.xssf.model.StylesTable;
|
||||||
import org.apache.poi.xssf.model.CalculationChain;
|
import org.apache.poi.xssf.model.CalculationChain;
|
||||||
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
|
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
||||||
|
|
||||||
|
|
||||||
public class TestXSSFSheet extends TestCase {
|
public class TestXSSFSheet extends BaseTestSheet {
|
||||||
|
|
||||||
public void testRowIterator() {
|
@Override
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
protected XSSFITestDataProvider getTestDataProvider(){
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
return XSSFITestDataProvider.getInstance();
|
||||||
Row row1 = sheet.createRow(0);
|
|
||||||
Row row2 = sheet.createRow(1);
|
|
||||||
Iterator<Row> it = sheet.rowIterator();
|
|
||||||
assertNotNull(it);
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertEquals(row1, it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertEquals(row2, it.next());
|
|
||||||
assertFalse(it.hasNext());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetRow() {
|
//TODO column styles are not yet supported by XSSF
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
public void testDefaultColumnStyle() {
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
//super.testDefaultColumnStyle();
|
||||||
Row row1 = sheet.createRow(0);
|
|
||||||
Cell cell = row1.createCell((short) 0);
|
|
||||||
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
|
|
||||||
cell.setCellValue((double) 1000);
|
|
||||||
|
|
||||||
// Test getting a row and check its cell's value
|
|
||||||
Row row_got = sheet.getRow(0);
|
|
||||||
Cell cell_got = row_got.getCell((short) 0);
|
|
||||||
assertEquals((double) 1000, cell_got.getNumericCellValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCreateRow() {
|
public void testTestGetSetMargin() {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
baseTestGetSetMargin(new double[]{0.7, 0.7, 0.75, 0.75, 0.3, 0.3});
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
|
|
||||||
// Test row creation with consecutive indexes
|
|
||||||
Row row1 = sheet.createRow(0);
|
|
||||||
Row row2 = sheet.createRow(1);
|
|
||||||
assertEquals(0, row1.getRowNum());
|
|
||||||
assertEquals(1, row2.getRowNum());
|
|
||||||
Iterator<Row> it = sheet.rowIterator();
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertEquals(row1, it.next());
|
|
||||||
assertTrue(it.hasNext());
|
|
||||||
assertEquals(row2, it.next());
|
|
||||||
|
|
||||||
// Test row creation with non consecutive index
|
|
||||||
Row row101 = sheet.createRow(100);
|
|
||||||
assertNotNull(row101);
|
|
||||||
|
|
||||||
// Test overwriting an existing row
|
|
||||||
Row row2_ovrewritten = sheet.createRow(1);
|
|
||||||
Cell cell = row2_ovrewritten.createCell((short) 0);
|
|
||||||
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
|
|
||||||
cell.setCellValue((double) 100);
|
|
||||||
Iterator<Row> it2 = sheet.rowIterator();
|
|
||||||
assertTrue(it2.hasNext());
|
|
||||||
assertEquals(row1, it2.next());
|
|
||||||
assertTrue(it2.hasNext());
|
|
||||||
Row row2_overwritten_copy = it2.next();
|
|
||||||
assertEquals(row2_ovrewritten, row2_overwritten_copy);
|
|
||||||
assertEquals(row2_overwritten_copy.getCell((short) 0).getNumericCellValue(), (double) 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRemoveRow() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
Row row1 = sheet.createRow(1);
|
|
||||||
Row row2 = sheet.createRow(2);
|
|
||||||
assertNotNull(sheet.getRow(1));
|
|
||||||
sheet.removeRow(row2);
|
|
||||||
assertNull(sheet.getRow(0));
|
|
||||||
assertNull(sheet.getRow(2));
|
|
||||||
assertNotNull(sheet.getRow(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetDefaultRowHeight() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
// Test that default height set by the constructor
|
|
||||||
assertEquals((short) 300, sheet.getDefaultRowHeight());
|
|
||||||
assertEquals((float) 15, sheet.getDefaultRowHeightInPoints());
|
|
||||||
// Set a new default row height in twips and test getting the value in points
|
|
||||||
sheet.setDefaultRowHeight((short) 360);
|
|
||||||
assertEquals((float) 18, sheet.getDefaultRowHeightInPoints());
|
|
||||||
// Test that defaultRowHeight is a truncated short: E.G. 360inPoints -> 18; 361inPoints -> 18
|
|
||||||
sheet.setDefaultRowHeight((short) 361);
|
|
||||||
assertEquals((float)361/20, sheet.getDefaultRowHeightInPoints());
|
|
||||||
// Set a new default row height in points and test getting the value in twips
|
|
||||||
sheet.setDefaultRowHeightInPoints((short) 17);
|
|
||||||
assertEquals((short) 340, sheet.getDefaultRowHeight());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetDefaultColumnWidth() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
// Test that default column width set by the constructor
|
|
||||||
assertEquals((short) 8, sheet.getDefaultColumnWidth());
|
|
||||||
// Set a new default column width and get its value
|
|
||||||
sheet.setDefaultColumnWidth((short) 14);
|
|
||||||
assertEquals((short) 14, sheet.getDefaultColumnWidth());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetFirstLastRowNum() {
|
public void testGetFirstLastRowNum() {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
Sheet sheet = workbook.createSheet("Sheet 1");
|
||||||
Row row10 = sheet.createRow(9);
|
Row row10 = sheet.createRow(9);
|
||||||
Row row1 = sheet.createRow(0);
|
Row row1 = sheet.createRow(0);
|
||||||
@ -146,149 +58,8 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
assertEquals(9, sheet.getLastRowNum());
|
assertEquals(9, sheet.getLastRowNum());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetPhysicalNumberOfRows() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
Row row10 = sheet.createRow(9);
|
|
||||||
Row row1 = sheet.createRow(0);
|
|
||||||
Row row2 = sheet.createRow(1);
|
|
||||||
assertEquals(3, sheet.getPhysicalNumberOfRows());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetRowBreaks() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertEquals(0, sheet.getRowBreaks().length);
|
|
||||||
sheet.setRowBreak(1);
|
|
||||||
sheet.setRowBreak(15);
|
|
||||||
assertNotNull(sheet.getRowBreaks());
|
|
||||||
assertEquals(1, sheet.getRowBreaks()[0]);
|
|
||||||
assertEquals(15, sheet.getRowBreaks()[1]);
|
|
||||||
sheet.setRowBreak(1);
|
|
||||||
assertEquals(2, sheet.getRowBreaks().length);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRemoveRowBreak() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
sheet.setRowBreak(1);
|
|
||||||
assertEquals(1, sheet.getRowBreaks().length);
|
|
||||||
sheet.setRowBreak(2);
|
|
||||||
assertEquals(2, sheet.getRowBreaks().length);
|
|
||||||
sheet.removeRowBreak(1);
|
|
||||||
assertEquals(1, sheet.getRowBreaks().length);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testMaxColumnWidth() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
sheet.setColumnWidth(0, 255*256); //the limit
|
|
||||||
try {
|
|
||||||
sheet.setColumnWidth(0, 256*256); //the limit
|
|
||||||
fail("expected exception");
|
|
||||||
} catch (Exception e){
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetColumnBreaks() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertEquals(0, sheet.getColumnBreaks().length);
|
|
||||||
sheet.setColumnBreak((short) 11);
|
|
||||||
assertNotNull(sheet.getColumnBreaks());
|
|
||||||
assertEquals(11, sheet.getColumnBreaks()[0]);
|
|
||||||
sheet.setColumnBreak((short) 11223);
|
|
||||||
assertEquals(2, sheet.getColumnBreaks().length);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRemoveColumnBreak() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertEquals(0, sheet.getColumnBreaks().length);
|
|
||||||
sheet.setColumnBreak((short) 11);
|
|
||||||
assertNotNull(sheet.getColumnBreaks());
|
|
||||||
sheet.setColumnBreak((short) 12);
|
|
||||||
assertEquals(2, sheet.getColumnBreaks().length);
|
|
||||||
sheet.removeColumnBreak((short) 11);
|
|
||||||
assertEquals(1, sheet.getColumnBreaks().length);
|
|
||||||
sheet.removeColumnBreak((short) 15);
|
|
||||||
assertEquals(1, sheet.getColumnBreaks().length);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIsRowColumnBroken() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertFalse(sheet.isRowBroken(0));
|
|
||||||
sheet.setRowBreak(3);
|
|
||||||
assertTrue(sheet.isRowBroken(3));
|
|
||||||
assertFalse(sheet.isColumnBroken((short) 0));
|
|
||||||
sheet.setColumnBreak((short) 3);
|
|
||||||
assertTrue(sheet.isColumnBroken((short) 3));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetAutoBreaks() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertTrue(sheet.getAutobreaks());
|
|
||||||
sheet.setAutobreaks(false);
|
|
||||||
assertFalse(sheet.getAutobreaks());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIsSetFitToPage() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertFalse(sheet.getFitToPage());
|
|
||||||
sheet.setFitToPage(true);
|
|
||||||
assertTrue(sheet.getFitToPage());
|
|
||||||
sheet.setFitToPage(false);
|
|
||||||
assertFalse(sheet.getFitToPage());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetMargin() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertEquals(0.7, sheet.getMargin((short) 0));
|
|
||||||
sheet.setMargin((short) 0, 10);
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 0));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 1));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 2));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 1, 11);
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 1));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 2));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 2, 12);
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 2));
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 3, 13);
|
|
||||||
assertEquals((double) 13, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 13, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 13, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 4, 14);
|
|
||||||
assertEquals((double) 14, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 14, sheet.getMargin((short) 5));
|
|
||||||
sheet.setMargin((short) 5, 15);
|
|
||||||
assertEquals((double) 15, sheet.getMargin((short) 5));
|
|
||||||
|
|
||||||
// Test that nothing happens if another margin constant is given (E.G. 65)
|
|
||||||
sheet.setMargin((short) 65, 15);
|
|
||||||
assertEquals((double) 10, sheet.getMargin((short) 0));
|
|
||||||
assertEquals((double) 11, sheet.getMargin((short) 1));
|
|
||||||
assertEquals((double) 12, sheet.getMargin((short) 2));
|
|
||||||
assertEquals((double) 13, sheet.getMargin((short) 3));
|
|
||||||
assertEquals((double) 14, sheet.getMargin((short) 4));
|
|
||||||
assertEquals((double) 15, sheet.getMargin((short) 5));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetFooter() {
|
public void testGetFooter() {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = getTestDataProvider().createWorkbook();
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
||||||
assertNotNull(sheet.getFooter());
|
assertNotNull(sheet.getFooter());
|
||||||
sheet.getFooter().setCenter("test center footer");
|
sheet.getFooter().setCenter("test center footer");
|
||||||
@ -364,7 +135,7 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testGetAllHeadersFooters() {
|
public void testGetAllHeadersFooters() {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = getTestDataProvider().createWorkbook();
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
||||||
assertNotNull(sheet.getOddFooter());
|
assertNotNull(sheet.getOddFooter());
|
||||||
assertNotNull(sheet.getEvenFooter());
|
assertNotNull(sheet.getEvenFooter());
|
||||||
@ -402,50 +173,8 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
assertEquals("odd header center", sheet.getHeader().getCenter());
|
assertEquals("odd header center", sheet.getHeader().getCenter());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetSetColumnWidth() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
sheet.setColumnWidth(1, 22*256);
|
|
||||||
assertEquals(22*256, sheet.getColumnWidth(1));
|
|
||||||
|
|
||||||
// Now check the low level stuff, and check that's all
|
|
||||||
// been set correctly
|
|
||||||
XSSFSheet xs = sheet;
|
|
||||||
CTWorksheet cts = xs.getCTWorksheet();
|
|
||||||
|
|
||||||
CTCols[] cols_s = cts.getColsArray();
|
|
||||||
assertEquals(1, cols_s.length);
|
|
||||||
CTCols cols = cols_s[0];
|
|
||||||
assertEquals(1, cols.sizeOfColArray());
|
|
||||||
CTCol col = cols.getColArray(0);
|
|
||||||
|
|
||||||
// XML is 1 based, POI is 0 based
|
|
||||||
assertEquals(2, col.getMin());
|
|
||||||
assertEquals(2, col.getMax());
|
|
||||||
assertEquals(22.0, col.getWidth());
|
|
||||||
|
|
||||||
|
|
||||||
// Now set another
|
|
||||||
sheet.setColumnWidth(3, 33*256);
|
|
||||||
|
|
||||||
cols_s = cts.getColsArray();
|
|
||||||
assertEquals(1, cols_s.length);
|
|
||||||
cols = cols_s[0];
|
|
||||||
assertEquals(2, cols.sizeOfColArray());
|
|
||||||
|
|
||||||
col = cols.getColArray(0);
|
|
||||||
assertEquals(2, col.getMin()); // POI 1
|
|
||||||
assertEquals(2, col.getMax());
|
|
||||||
assertEquals(22.0, col.getWidth());
|
|
||||||
|
|
||||||
col = cols.getColArray(1);
|
|
||||||
assertEquals(4, col.getMin()); // POI 3
|
|
||||||
assertEquals(4, col.getMax());
|
|
||||||
assertEquals(33.0, col.getWidth());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetColumnHidden() {
|
public void testGetSetColumnHidden() {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
Sheet sheet = workbook.createSheet("Sheet 1");
|
||||||
sheet.setColumnHidden((short) 2, true);
|
sheet.setColumnHidden((short) 2, true);
|
||||||
assertTrue(sheet.isColumnHidden((short) 2));
|
assertTrue(sheet.isColumnHidden((short) 2));
|
||||||
@ -463,185 +192,6 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
assertTrue(col.getBestFit());
|
assertTrue(col.getBestFit());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetSetHorizontallyCentered() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertFalse(sheet.getHorizontallyCenter());
|
|
||||||
sheet.setHorizontallyCenter(true);
|
|
||||||
assertTrue(sheet.getHorizontallyCenter());
|
|
||||||
sheet.setHorizontallyCenter(false);
|
|
||||||
assertFalse(sheet.getHorizontallyCenter());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetVerticallyCentered() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertFalse(sheet.getVerticallyCenter());
|
|
||||||
sheet.setVerticallyCenter(true);
|
|
||||||
assertTrue(sheet.getVerticallyCenter());
|
|
||||||
sheet.setVerticallyCenter(false);
|
|
||||||
assertFalse(sheet.getVerticallyCenter());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIsSetPrintGridlines() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertFalse(sheet.isPrintGridlines());
|
|
||||||
sheet.setPrintGridlines(true);
|
|
||||||
assertTrue(sheet.isPrintGridlines());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIsSetDisplayFormulas() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertFalse(sheet.isDisplayFormulas());
|
|
||||||
sheet.setDisplayFormulas(true);
|
|
||||||
assertTrue(sheet.isDisplayFormulas());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIsSetDisplayGridLines() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertTrue(sheet.isDisplayGridlines());
|
|
||||||
sheet.setDisplayGridlines(false);
|
|
||||||
assertFalse(sheet.isDisplayGridlines());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIsSetDisplayGuts() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertTrue(sheet.getDisplayGuts());
|
|
||||||
sheet.setDisplayGuts(false);
|
|
||||||
assertFalse(sheet.getDisplayGuts());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIsSetDisplayRowColHeadings() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertTrue(sheet.isDisplayRowColHeadings());
|
|
||||||
sheet.setDisplayRowColHeadings(false);
|
|
||||||
assertFalse(sheet.isDisplayRowColHeadings());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetScenarioProtect() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
assertFalse(sheet.getScenarioProtect());
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
public void testTopRowLeftCol() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
||||||
sheet.showInPane((short)1, (short)1);
|
|
||||||
assertEquals((short) 1, sheet.getTopRow());
|
|
||||||
assertEquals((short) 1, sheet.getLeftCol());
|
|
||||||
sheet.showInPane((short)2, (short)26);
|
|
||||||
assertEquals((short) 2, sheet.getTopRow());
|
|
||||||
assertEquals((short) 26, sheet.getLeftCol());
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
public void testShiftRows() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
|
|
||||||
XSSFSheet sheet = createSheet(workbook, "Sheet 1");
|
|
||||||
sheet.shiftRows(1, 2, 4, true, false);
|
|
||||||
assertEquals((short) 1, sheet.getRow(5).getHeight());
|
|
||||||
assertEquals((short) 2, sheet.getRow(6).getHeight());
|
|
||||||
assertNull(sheet.getRow(1));
|
|
||||||
assertNull(sheet.getRow(2));
|
|
||||||
assertEquals(8, sheet.getPhysicalNumberOfRows());
|
|
||||||
|
|
||||||
XSSFSheet sheet2 = createSheet(workbook, "Sheet 2");
|
|
||||||
sheet2.shiftRows(1, 5, 3, true, false);
|
|
||||||
assertEquals((short) 1, sheet2.getRow(4).getHeight());
|
|
||||||
assertEquals((short) 2, sheet2.getRow(5).getHeight());
|
|
||||||
assertEquals((short) 3, sheet2.getRow(6).getHeight());
|
|
||||||
assertEquals((short) 4, sheet2.getRow(7).getHeight());
|
|
||||||
assertEquals((short) 5, sheet2.getRow(8).getHeight());
|
|
||||||
assertNull(sheet2.getRow(1));
|
|
||||||
assertNull(sheet2.getRow(2));
|
|
||||||
assertNull(sheet2.getRow(3));
|
|
||||||
assertEquals(7, sheet2.getPhysicalNumberOfRows());
|
|
||||||
|
|
||||||
XSSFSheet sheet3 = createSheet(workbook, "Sheet 3");
|
|
||||||
sheet3.shiftRows(5, 7, -3, true, false);
|
|
||||||
assertEquals(5, sheet3.getRow(2).getHeight());
|
|
||||||
assertEquals(6, sheet3.getRow(3).getHeight());
|
|
||||||
assertEquals(7, sheet3.getRow(4).getHeight());
|
|
||||||
assertNull(sheet3.getRow(5));
|
|
||||||
assertNull(sheet3.getRow(6));
|
|
||||||
assertNull(sheet3.getRow(7));
|
|
||||||
assertEquals(7, sheet3.getPhysicalNumberOfRows());
|
|
||||||
|
|
||||||
XSSFSheet sheet4 = createSheet(workbook, "Sheet 4");
|
|
||||||
sheet4.shiftRows(5, 7, -2, true, false);
|
|
||||||
assertEquals(5, sheet4.getRow(3).getHeight());
|
|
||||||
assertEquals(6, sheet4.getRow(4).getHeight());
|
|
||||||
assertEquals(7, sheet4.getRow(5).getHeight());
|
|
||||||
assertNull(sheet4.getRow(6));
|
|
||||||
assertNull(sheet4.getRow(7));
|
|
||||||
assertEquals(8, sheet4.getPhysicalNumberOfRows());
|
|
||||||
|
|
||||||
// Test without copying rowHeight
|
|
||||||
XSSFSheet sheet5 = createSheet(workbook, "Sheet 5");
|
|
||||||
sheet5.shiftRows(5, 7, -2, false, false);
|
|
||||||
assertEquals(sheet5.getDefaultRowHeight(), sheet5.getRow(3).getHeight());
|
|
||||||
assertEquals(sheet5.getDefaultRowHeight(), sheet5.getRow(4).getHeight());
|
|
||||||
assertEquals(sheet5.getDefaultRowHeight(), sheet5.getRow(5).getHeight());
|
|
||||||
assertNull(sheet5.getRow(6));
|
|
||||||
assertNull(sheet5.getRow(7));
|
|
||||||
assertEquals(8, sheet5.getPhysicalNumberOfRows());
|
|
||||||
|
|
||||||
// Test without copying rowHeight and resetting to default height
|
|
||||||
XSSFSheet sheet6 = createSheet(workbook, "Sheet 6");
|
|
||||||
sheet6.setDefaultRowHeight((short) 200);
|
|
||||||
sheet6.shiftRows(5, 7, -2, false, true);
|
|
||||||
assertEquals(200, sheet6.getRow(3).getHeight());
|
|
||||||
assertEquals(200, sheet6.getRow(4).getHeight());
|
|
||||||
assertEquals(200, sheet6.getRow(5).getHeight());
|
|
||||||
assertNull(sheet6.getRow(6));
|
|
||||||
assertNull(sheet6.getRow(7));
|
|
||||||
assertEquals(8, sheet6.getPhysicalNumberOfRows());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When shifting rows, update formulas on that sheet to point to the new location of those rows
|
|
||||||
* (see bugzilla 46536)
|
|
||||||
*/
|
|
||||||
public void testShiftRows_46536() {
|
|
||||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("46536.xlsx");
|
|
||||||
CalculationChain calcChain = wb.getCalculationChain();
|
|
||||||
int numItems = calcChain.getCTCalcChain().getCArray().length;
|
|
||||||
assertEquals(3, numItems);
|
|
||||||
|
|
||||||
XSSFSheet sheet = wb.getSheet("Test");
|
|
||||||
XSSFRow row2 = sheet.getRow(1);
|
|
||||||
XSSFCell cell_A2 = row2.getCell(0);
|
|
||||||
assertEquals("A2", cell_A2.getReference());
|
|
||||||
|
|
||||||
XSSFRow row3 = sheet.getRow(2);
|
|
||||||
XSSFCell cell_B3 = row3.getCell(1);
|
|
||||||
assertEquals("B3", cell_B3.getReference());
|
|
||||||
|
|
||||||
XSSFCell cell_E2 = row2.getCell(4);
|
|
||||||
CTCellFormula f = cell_E2.getCTCell().getF();
|
|
||||||
assertEquals("B2+C2+D2", f.getStringValue());
|
|
||||||
assertEquals("E2:E3", f.getRef());
|
|
||||||
|
|
||||||
sheet.shiftRows(1, sheet.getLastRowNum(), 3, false, true);
|
|
||||||
|
|
||||||
assertEquals(4, row2.getRowNum());
|
|
||||||
assertEquals(5, row3.getRowNum());
|
|
||||||
assertEquals("A5", cell_A2.getReference());
|
|
||||||
assertEquals("B6", cell_B3.getReference());
|
|
||||||
|
|
||||||
assertEquals("B5+C5+D5", f.getStringValue());
|
|
||||||
assertEquals("E5:E6", f.getRef());
|
|
||||||
|
|
||||||
numItems = calcChain.getCTCalcChain().getCArray().length;
|
|
||||||
assertEquals(1, numItems);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetCellComment() {
|
public void testGetCellComment() {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
@ -758,31 +308,7 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private XSSFSheet createSheet(XSSFWorkbook workbook, String name) {
|
|
||||||
XSSFSheet sheet = workbook.createSheet(name);
|
|
||||||
Row row0 = sheet.createRow(0);
|
|
||||||
row0.setHeight((short) 1);
|
|
||||||
Row row1 = sheet.createRow(1);
|
|
||||||
row1.setHeight((short) 1);
|
|
||||||
Row row2 = sheet.createRow(2);
|
|
||||||
row2.setHeight((short) 2);
|
|
||||||
Row row3 = sheet.createRow(3);
|
|
||||||
row3.setHeight((short) 3);
|
|
||||||
Row row4 = sheet.createRow(4);
|
|
||||||
row4.setHeight((short) 4);
|
|
||||||
Row row5 = sheet.createRow(5);
|
|
||||||
row5.setHeight((short) 5);
|
|
||||||
Row row6 = sheet.createRow(6);
|
|
||||||
row6.setHeight((short) 6);
|
|
||||||
Row row7 = sheet.createRow(7);
|
|
||||||
row7.setHeight((short) 7);
|
|
||||||
Row row8 = sheet.createRow(8);
|
|
||||||
row8.setHeight((short) 8);
|
|
||||||
Row row9 = sheet.createRow(9);
|
|
||||||
row9.setHeight((short) 9);
|
|
||||||
return sheet;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void testGroupUngroupColumn() {
|
public void testGroupUngroupColumn() {
|
||||||
@ -881,77 +407,49 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testOutlineProperties() {
|
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
|
||||||
|
|
||||||
XSSFSheet sheet = wb.createSheet();
|
|
||||||
|
|
||||||
assertTrue(sheet.getRowSumsBelow());
|
|
||||||
assertTrue(sheet.getRowSumsRight());
|
|
||||||
|
|
||||||
sheet.setRowSumsBelow(false);
|
|
||||||
sheet.setRowSumsRight(false);
|
|
||||||
|
|
||||||
assertFalse(sheet.getRowSumsBelow());
|
|
||||||
assertFalse(sheet.getRowSumsRight());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void testSetColumnGroupCollapsed(){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void testColumnWidthCompatibility() {
|
|
||||||
Workbook wb1 = new HSSFWorkbook();
|
|
||||||
Workbook wb2 = new XSSFWorkbook();
|
|
||||||
|
|
||||||
Sheet sh1 = wb1.createSheet();
|
|
||||||
Sheet sh2 = wb2.createSheet();
|
|
||||||
|
|
||||||
assertEquals(sh1.getDefaultColumnWidth(), sh2.getDefaultColumnWidth());
|
|
||||||
|
|
||||||
//if column width is not set, HSSF returns a wrong value which does not take into account
|
|
||||||
//margins and borders, it is always less than the actual column width
|
|
||||||
assertEquals(2048, sh1.getColumnWidth(0));
|
|
||||||
assertEquals(2340, sh2.getColumnWidth(0));
|
|
||||||
|
|
||||||
sh1.setDefaultColumnWidth(1000);
|
|
||||||
sh2.setDefaultColumnWidth(1000);
|
|
||||||
assertEquals(1000, sh2.getDefaultColumnWidth());
|
|
||||||
assertEquals(sh1.getDefaultColumnWidth(), sh2.getDefaultColumnWidth());
|
|
||||||
|
|
||||||
sh1.setColumnWidth(0, 500);
|
|
||||||
sh2.setColumnWidth(0, 500);
|
|
||||||
assertEquals(500, sh2.getColumnWidth(0));
|
|
||||||
assertEquals(sh1.getColumnWidth(0), sh2.getColumnWidth(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the display of gridlines, formulas, and rowcolheadings.
|
* Get / Set column width and check the actual values of the underlying XML beans
|
||||||
* @author Shawn Laubach (slaubach at apache dot org)
|
|
||||||
*/
|
*/
|
||||||
public void testDisplayOptions() {
|
public void testColumnWidth_lowlevel() {
|
||||||
Workbook wb = new XSSFWorkbook();
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
Sheet sheet = wb.createSheet();
|
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
||||||
|
sheet.setColumnWidth(1, 22*256);
|
||||||
|
assertEquals(22*256, sheet.getColumnWidth(1));
|
||||||
|
|
||||||
assertEquals(sheet.isDisplayGridlines(), true);
|
// Now check the low level stuff, and check that's all
|
||||||
assertEquals(sheet.isDisplayRowColHeadings(), true);
|
// been set correctly
|
||||||
assertEquals(sheet.isDisplayFormulas(), false);
|
XSSFSheet xs = sheet;
|
||||||
assertEquals(sheet.isDisplayZeros(), true);
|
CTWorksheet cts = xs.getCTWorksheet();
|
||||||
|
|
||||||
sheet.setDisplayGridlines(false);
|
CTCols[] cols_s = cts.getColsArray();
|
||||||
sheet.setDisplayRowColHeadings(false);
|
assertEquals(1, cols_s.length);
|
||||||
sheet.setDisplayFormulas(true);
|
CTCols cols = cols_s[0];
|
||||||
sheet.setDisplayZeros(false);
|
assertEquals(1, cols.sizeOfColArray());
|
||||||
|
CTCol col = cols.getColArray(0);
|
||||||
|
|
||||||
wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
|
// XML is 1 based, POI is 0 based
|
||||||
sheet = wb.getSheetAt(0);
|
assertEquals(2, col.getMin());
|
||||||
|
assertEquals(2, col.getMax());
|
||||||
|
assertEquals(22.0, col.getWidth());
|
||||||
|
|
||||||
assertEquals(sheet.isDisplayGridlines(), false);
|
|
||||||
assertEquals(sheet.isDisplayRowColHeadings(), false);
|
// Now set another
|
||||||
assertEquals(sheet.isDisplayFormulas(), true);
|
sheet.setColumnWidth(3, 33*256);
|
||||||
assertEquals(sheet.isDisplayZeros(), false);
|
|
||||||
|
cols_s = cts.getColsArray();
|
||||||
|
assertEquals(1, cols_s.length);
|
||||||
|
cols = cols_s[0];
|
||||||
|
assertEquals(2, cols.sizeOfColArray());
|
||||||
|
|
||||||
|
col = cols.getColArray(0);
|
||||||
|
assertEquals(2, col.getMin()); // POI 1
|
||||||
|
assertEquals(2, col.getMax());
|
||||||
|
assertEquals(22.0, col.getWidth());
|
||||||
|
|
||||||
|
col = cols.getColArray(1);
|
||||||
|
assertEquals(4, col.getMin()); // POI 3
|
||||||
|
assertEquals(4, col.getMax());
|
||||||
|
assertEquals(33.0, col.getWidth());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ import org.apache.poi.hssf.HSSFTestDataSamples;
|
|||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.apache.poi.ss.util.CellRangeAddress;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
|
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
import org.apache.poi.xssf.model.StylesTable;
|
import org.apache.poi.xssf.model.StylesTable;
|
||||||
import org.apache.poi.openxml4j.opc.ContentTypes;
|
import org.apache.poi.openxml4j.opc.ContentTypes;
|
||||||
import org.apache.poi.openxml4j.opc.OPCPackage;
|
import org.apache.poi.openxml4j.opc.OPCPackage;
|
||||||
@ -35,139 +36,14 @@ import org.apache.poi.openxml4j.opc.PackagingURIHelper;
|
|||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
|
||||||
|
|
||||||
public final class TestXSSFWorkbook extends TestCase {
|
public final class TestXSSFWorkbook extends BaseTestWorkbook {
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setUp() {
|
|
||||||
// Use system out logger
|
|
||||||
System.setProperty(
|
|
||||||
"org.apache.poi.util.POILogger",
|
|
||||||
"org.apache.poi.util.SystemOutLogger"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSetActiveSheet(){
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
assertEquals(0, workbook.getActiveSheetIndex());
|
|
||||||
|
|
||||||
workbook.createSheet("sheet1");
|
|
||||||
workbook.createSheet("sheet2");
|
|
||||||
workbook.createSheet("sheet3");
|
|
||||||
// set second sheet
|
|
||||||
workbook.setActiveSheet(1);
|
|
||||||
// test if second sheet is set up
|
|
||||||
assertEquals(1, workbook.getActiveSheetIndex());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetSheetIndex() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet1 = workbook.createSheet("sheet1");
|
|
||||||
Sheet sheet2 = workbook.createSheet("sheet2");
|
|
||||||
assertEquals(0, workbook.getSheetIndex(sheet1));
|
|
||||||
assertEquals(0, workbook.getSheetIndex("sheet1"));
|
|
||||||
assertEquals(1, workbook.getSheetIndex(sheet2));
|
|
||||||
assertEquals(1, workbook.getSheetIndex("sheet2"));
|
|
||||||
assertEquals(-1, workbook.getSheetIndex("noSheet"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSetSheetOrder() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet1 = workbook.createSheet("sheet1");
|
|
||||||
Sheet sheet2 = workbook.createSheet("sheet2");
|
|
||||||
assertSame(sheet1, workbook.getSheetAt(0));
|
|
||||||
assertSame(sheet2, workbook.getSheetAt(1));
|
|
||||||
workbook.setSheetOrder("sheet2", 0);
|
|
||||||
assertSame(sheet2, workbook.getSheetAt(0));
|
|
||||||
assertSame(sheet1, workbook.getSheetAt(1));
|
|
||||||
// Test reordering of CTSheets
|
|
||||||
CTWorkbook ctwb = workbook.getCTWorkbook();
|
|
||||||
CTSheet[] ctsheets = ctwb.getSheets().getSheetArray();
|
|
||||||
assertEquals("sheet2", ctsheets[0].getName());
|
|
||||||
assertEquals("sheet1", ctsheets[1].getName());
|
|
||||||
|
|
||||||
// Borderline case: only one sheet
|
|
||||||
workbook = new XSSFWorkbook();
|
|
||||||
sheet1 = workbook.createSheet("sheet1");
|
|
||||||
assertSame(sheet1, workbook.getSheetAt(0));
|
|
||||||
workbook.setSheetOrder("sheet1", 0);
|
|
||||||
assertSame(sheet1, workbook.getSheetAt(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSetSheetName() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
workbook.createSheet("sheet1");
|
|
||||||
assertEquals("sheet1", workbook.getSheetName(0));
|
|
||||||
workbook.setSheetName(0, "sheet2");
|
|
||||||
assertEquals("sheet2", workbook.getSheetName(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testCloneSheet() {
|
|
||||||
XSSFWorkbook book = new XSSFWorkbook();
|
|
||||||
XSSFSheet sheet = book.createSheet("TEST");
|
|
||||||
sheet.createRow(0).createCell(0).setCellValue("Test");
|
|
||||||
sheet.createRow(1).createCell(0).setCellValue(36.6);
|
|
||||||
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2));
|
|
||||||
sheet.addMergedRegion(new CellRangeAddress(1, 2, 0, 2));
|
|
||||||
assertTrue(sheet.isSelected());
|
|
||||||
|
|
||||||
XSSFSheet clonedSheet = book.cloneSheet(0);
|
|
||||||
assertEquals("TEST (2)", clonedSheet.getSheetName());
|
|
||||||
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
|
|
||||||
assertEquals(2, clonedSheet.getNumMergedRegions());
|
|
||||||
assertFalse(clonedSheet.isSelected());
|
|
||||||
|
|
||||||
//cloned sheet is a deep copy, adding rows in the original does not affect the clone
|
|
||||||
sheet.createRow(2).createCell(0).setCellValue(1);
|
|
||||||
sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 2));
|
|
||||||
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
|
|
||||||
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
|
|
||||||
|
|
||||||
clonedSheet.createRow(2).createCell(0).setCellValue(1);
|
|
||||||
clonedSheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 2));
|
|
||||||
assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
|
|
||||||
assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected XSSFITestDataProvider getTestDataProvider(){
|
||||||
|
return XSSFITestDataProvider.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetSheetByName() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet1 = workbook.createSheet("sheet1");
|
|
||||||
Sheet sheet2 = workbook.createSheet("sheet2");
|
|
||||||
assertSame(sheet1, workbook.getSheet("sheet1"));
|
|
||||||
assertSame(sheet2, workbook.getSheet("sheet2"));
|
|
||||||
assertNull(workbook.getSheet("nosheet"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRemoveSheetAt() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
workbook.createSheet("sheet1");
|
|
||||||
workbook.createSheet("sheet2");
|
|
||||||
workbook.createSheet("sheet3");
|
|
||||||
workbook.removeSheetAt(1);
|
|
||||||
assertEquals(2, workbook.getNumberOfSheets());
|
|
||||||
assertEquals("sheet3", workbook.getSheetName(1));
|
|
||||||
workbook.removeSheetAt(0);
|
|
||||||
assertEquals(1, workbook.getNumberOfSheets());
|
|
||||||
assertEquals("sheet3", workbook.getSheetName(0));
|
|
||||||
workbook.removeSheetAt(0);
|
|
||||||
assertEquals(0, workbook.getNumberOfSheets());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testPrintArea(){
|
|
||||||
Workbook workbook = new XSSFWorkbook();
|
|
||||||
Sheet sheet = workbook.createSheet("Test Print Area");
|
|
||||||
String sheetName = workbook.getSheetName(0);
|
|
||||||
|
|
||||||
// String reference = sheetName+"!$A$1:$B$1";
|
|
||||||
// workbook.setPrintArea(0, reference);
|
|
||||||
workbook.setPrintArea(0,1,5,4,9);
|
|
||||||
|
|
||||||
String retrievedPrintArea = workbook.getPrintArea(0);
|
|
||||||
|
|
||||||
//assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
|
|
||||||
assertEquals("'"+sheetName+"'!$B$5:$F$10", retrievedPrintArea);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRepeatingRowsAndColums() {
|
public void testRepeatingRowsAndColums() {
|
||||||
// First test that setting RR&C for same sheet more than once only creates a
|
// First test that setting RR&C for same sheet more than once only creates a
|
||||||
// single Print_Titles built-in record
|
// single Print_Titles built-in record
|
||||||
@ -205,24 +81,9 @@ public final class TestXSSFWorkbook extends TestCase {
|
|||||||
assertEquals(XSSFName.BUILTIN_PRINT_TITLE, nr2.getNameName());
|
assertEquals(XSSFName.BUILTIN_PRINT_TITLE, nr2.getNameName());
|
||||||
assertEquals("'SecondSheet'!$B:$C,'SecondSheet'!$1:$1", nr2.getRefersToFormula());
|
assertEquals("'SecondSheet'!$B:$C,'SecondSheet'!$1:$1", nr2.getRefersToFormula());
|
||||||
|
|
||||||
|
|
||||||
nwb.setRepeatingRowsAndColumns(1, -1, -1, -1, -1);
|
nwb.setRepeatingRowsAndColumns(1, -1, -1, -1, -1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests that we can save a new document
|
|
||||||
*/
|
|
||||||
public void testSaveNew() {
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
workbook.createSheet("sheet1");
|
|
||||||
workbook.createSheet("sheet2");
|
|
||||||
workbook.createSheet("sheet3");
|
|
||||||
|
|
||||||
XSSFTestDataSamples.writeOutAndReadBack(workbook);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests that we can save, and then re-load a new document
|
* Tests that we can save, and then re-load a new document
|
||||||
*/
|
*/
|
||||||
@ -242,8 +103,8 @@ public final class TestXSSFWorkbook extends TestCase {
|
|||||||
assertEquals(1, workbook.getSheetAt(0).getLastRowNum());
|
assertEquals(1, workbook.getSheetAt(0).getLastRowNum());
|
||||||
assertEquals(0, workbook.getSheetAt(1).getFirstRowNum());
|
assertEquals(0, workbook.getSheetAt(1).getFirstRowNum());
|
||||||
assertEquals(0, workbook.getSheetAt(1).getLastRowNum());
|
assertEquals(0, workbook.getSheetAt(1).getLastRowNum());
|
||||||
assertEquals(-1, workbook.getSheetAt(2).getFirstRowNum());
|
assertEquals(0, workbook.getSheetAt(2).getFirstRowNum());
|
||||||
assertEquals(-1, workbook.getSheetAt(2).getLastRowNum());
|
assertEquals(0, workbook.getSheetAt(2).getLastRowNum());
|
||||||
|
|
||||||
File file = File.createTempFile("poi-", ".xlsx");
|
File file = File.createTempFile("poi-", ".xlsx");
|
||||||
OutputStream out = new FileOutputStream(file);
|
OutputStream out = new FileOutputStream(file);
|
||||||
@ -278,8 +139,8 @@ public final class TestXSSFWorkbook extends TestCase {
|
|||||||
assertEquals(1, workbook.getSheetAt(0).getLastRowNum());
|
assertEquals(1, workbook.getSheetAt(0).getLastRowNum());
|
||||||
assertEquals(0, workbook.getSheetAt(1).getFirstRowNum());
|
assertEquals(0, workbook.getSheetAt(1).getFirstRowNum());
|
||||||
assertEquals(0, workbook.getSheetAt(1).getLastRowNum());
|
assertEquals(0, workbook.getSheetAt(1).getLastRowNum());
|
||||||
assertEquals(-1, workbook.getSheetAt(2).getFirstRowNum());
|
assertEquals(0, workbook.getSheetAt(2).getFirstRowNum());
|
||||||
assertEquals(-1, workbook.getSheetAt(2).getLastRowNum());
|
assertEquals(0, workbook.getSheetAt(2).getLastRowNum());
|
||||||
|
|
||||||
sheet1 = workbook.getSheetAt(0);
|
sheet1 = workbook.getSheetAt(0);
|
||||||
assertEquals(1.2, sheet1.getRow(0).getCell(0).getNumericCellValue(), 0.0001);
|
assertEquals(1.2, sheet1.getRow(0).getCell(0).getNumericCellValue(), 0.0001);
|
||||||
@ -379,13 +240,6 @@ public final class TestXSSFWorkbook extends TestCase {
|
|||||||
assertNotSame(2, i);
|
assertNotSame(2, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetDisplayedTab(){
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
short i = (short) workbook.getFirstVisibleTab();
|
|
||||||
//get default diplayedTab
|
|
||||||
assertEquals(0, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSetDisplayedTab(){
|
public void testSetDisplayedTab(){
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
workbook.setFirstVisibleTab(1);
|
workbook.setFirstVisibleTab(1);
|
||||||
@ -395,8 +249,8 @@ public final class TestXSSFWorkbook extends TestCase {
|
|||||||
//1 is the default tab
|
//1 is the default tab
|
||||||
assertEquals(1, i);
|
assertEquals(1, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void testLoadSave() {
|
public void testLoadSave() {
|
||||||
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
|
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
|
||||||
assertEquals(3, workbook.getNumberOfSheets());
|
assertEquals(3, workbook.getNumberOfSheets());
|
||||||
@ -458,94 +312,4 @@ public final class TestXSSFWorkbook extends TestCase {
|
|||||||
assertEquals(1, st.getBorders().size());
|
assertEquals(1, st.getBorders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testNamedRanges() {
|
|
||||||
// First up, a new file
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
||||||
assertEquals(0, workbook.getNumberOfNames());
|
|
||||||
|
|
||||||
Name nameA = workbook.createName();
|
|
||||||
nameA.setRefersToFormula("A2");
|
|
||||||
nameA.setNameName("ForA2");
|
|
||||||
|
|
||||||
XSSFName nameB = workbook.createName();
|
|
||||||
nameB.setRefersToFormula("B3");
|
|
||||||
nameB.setNameName("ForB3");
|
|
||||||
nameB.setComment("B3 Comment");
|
|
||||||
|
|
||||||
// Save and re-load
|
|
||||||
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
|
|
||||||
|
|
||||||
assertEquals(2, workbook.getNumberOfNames());
|
|
||||||
assertEquals("A2", workbook.getNameAt(0).getRefersToFormula());
|
|
||||||
assertEquals("ForA2", workbook.getNameAt(0).getNameName());
|
|
||||||
assertNull(workbook.getNameAt(0).getComment());
|
|
||||||
|
|
||||||
assertEquals("B3", workbook.getNameAt(1).getRefersToFormula());
|
|
||||||
assertEquals("ForB3", workbook.getNameAt(1).getNameName());
|
|
||||||
assertEquals("B3 Comment", workbook.getNameAt(1).getComment());
|
|
||||||
|
|
||||||
assertEquals("ForA2", workbook.getNameAt(0).getNameName());
|
|
||||||
assertEquals(1, workbook.getNameIndex("ForB3"));
|
|
||||||
assertEquals(-1, workbook.getNameIndex("ForB3!!"));
|
|
||||||
|
|
||||||
|
|
||||||
// Now, an existing file with named ranges
|
|
||||||
workbook = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx");
|
|
||||||
|
|
||||||
assertEquals(2, workbook.getNumberOfNames());
|
|
||||||
assertEquals("Sheet1!$A$2:$A$7", workbook.getNameAt(0).getRefersToFormula());
|
|
||||||
assertEquals("AllANumbers", workbook.getNameAt(0).getNameName());
|
|
||||||
assertEquals("All the numbers in A", workbook.getNameAt(0).getComment());
|
|
||||||
|
|
||||||
assertEquals("Sheet1!$B$2:$B$7", workbook.getNameAt(1).getRefersToFormula());
|
|
||||||
assertEquals("AllBStrings", workbook.getNameAt(1).getNameName());
|
|
||||||
assertEquals("All the strings in B", workbook.getNameAt(1).getComment());
|
|
||||||
|
|
||||||
// Tweak, save, and re-check
|
|
||||||
workbook.getNameAt(1).setNameName("BStringsFun");
|
|
||||||
|
|
||||||
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
|
|
||||||
|
|
||||||
assertEquals(2, workbook.getNumberOfNames());
|
|
||||||
assertEquals("Sheet1!$A$2:$A$7", workbook.getNameAt(0).getRefersToFormula());
|
|
||||||
assertEquals("AllANumbers", workbook.getNameAt(0).getNameName());
|
|
||||||
assertEquals("All the numbers in A", workbook.getNameAt(0).getComment());
|
|
||||||
|
|
||||||
assertEquals("Sheet1!$B$2:$B$7", workbook.getNameAt(1).getRefersToFormula());
|
|
||||||
assertEquals("BStringsFun", workbook.getNameAt(1).getNameName());
|
|
||||||
assertEquals("All the strings in B", workbook.getNameAt(1).getComment());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testDuplicateNames() {
|
|
||||||
|
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
|
||||||
wb.createSheet("Sheet1");
|
|
||||||
wb.createSheet();
|
|
||||||
wb.createSheet("name1");
|
|
||||||
try {
|
|
||||||
wb.createSheet("name1");
|
|
||||||
fail();
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
assertEquals("The workbook already contains a sheet of this name", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
wb.createSheet();
|
|
||||||
|
|
||||||
try {
|
|
||||||
wb.setSheetName(3, "name1");
|
|
||||||
fail();
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
assertEquals("The workbook already contains a sheet of this name", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
wb.setSheetName(3, "Sheet1");
|
|
||||||
fail();
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
assertEquals("The workbook already contains a sheet of this name", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
wb.setSheetName(3, "name2");
|
|
||||||
wb.setSheetName(3, "Sheet3");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -57,8 +57,6 @@ public class AllUserModelTests {
|
|||||||
result.addTestSuite(TestHSSFRichTextString.class);
|
result.addTestSuite(TestHSSFRichTextString.class);
|
||||||
result.addTestSuite(TestHSSFRow.class);
|
result.addTestSuite(TestHSSFRow.class);
|
||||||
result.addTestSuite(TestHSSFSheet.class);
|
result.addTestSuite(TestHSSFSheet.class);
|
||||||
result.addTestSuite(TestHSSFSheetOrder.class);
|
|
||||||
result.addTestSuite(TestHSSFSheetSetOrder.class);
|
|
||||||
result.addTestSuite(TestHSSFTextbox.class);
|
result.addTestSuite(TestHSSFTextbox.class);
|
||||||
result.addTestSuite(TestHSSFWorkbook.class);
|
result.addTestSuite(TestHSSFWorkbook.class);
|
||||||
result.addTestSuite(TestLinkTable.class);
|
result.addTestSuite(TestLinkTable.class);
|
||||||
|
@ -624,27 +624,6 @@ public final class TestBugs extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Bug 40296: HSSFCell.setCellFormula throws
|
|
||||||
* ClassCastException if cell is created using HSSFRow.createCell(short column, int type)
|
|
||||||
*/
|
|
||||||
public void test40296() {
|
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
|
||||||
|
|
||||||
HSSFWorkbook workBook = new HSSFWorkbook();
|
|
||||||
HSSFSheet workSheet = workBook.createSheet("Sheet1");
|
|
||||||
HSSFCell cell;
|
|
||||||
HSSFRow row = workSheet.createRow(0);
|
|
||||||
cell = row.createCell(0, HSSFCell.CELL_TYPE_NUMERIC);
|
|
||||||
cell.setCellValue(1.0);
|
|
||||||
cell = row.createCell(1, HSSFCell.CELL_TYPE_NUMERIC);
|
|
||||||
cell.setCellValue(2.0);
|
|
||||||
cell = row.createCell(2, HSSFCell.CELL_TYPE_FORMULA);
|
|
||||||
cell.setCellFormula("SUM(A1:B1)");
|
|
||||||
|
|
||||||
writeOutAndReadBack(wb);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test bug 38266: NPE when adding a row break
|
* Test bug 38266: NPE when adding a row break
|
||||||
*
|
*
|
||||||
|
@ -44,21 +44,6 @@ public final class TestHSSFCell extends BaseTestCell {
|
|||||||
return HSSFITestDataProvider.getInstance();
|
return HSSFITestDataProvider.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSetValues() {
|
|
||||||
baseTestSetValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* test that Boolean and Error types (BoolErrRecord) are supported properly.
|
|
||||||
*/
|
|
||||||
public void testBoolErr() {
|
|
||||||
baseTestBoolErr();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSetFormulaValue() {
|
|
||||||
baseTestSetFormulaValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks that the recognition of files using 1904 date windowing
|
* Checks that the recognition of files using 1904 date windowing
|
||||||
* is working properly. Conversion of the date is also an issue,
|
* is working properly. Conversion of the date is also an issue,
|
||||||
@ -168,13 +153,6 @@ public final class TestHSSFCell extends BaseTestCell {
|
|||||||
3, s.getActiveCellRow());
|
3, s.getActiveCellRow());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* test that Cell Styles being applied to formulas remain intact
|
|
||||||
*/
|
|
||||||
public void testFormulaStyle() {
|
|
||||||
baseTestFormulaStyle();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test reading hyperlinks
|
* Test reading hyperlinks
|
||||||
*/
|
*/
|
||||||
@ -219,13 +197,8 @@ public final class TestHSSFCell extends BaseTestCell {
|
|||||||
assertEquals(1, link2.getFirstColumn());
|
assertEquals(1, link2.getFirstColumn());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**tests the toString() method of HSSFCell*/
|
|
||||||
public void testToString() {
|
|
||||||
baseTestToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSetStringInFormulaCell_bug44606() {
|
public void testSetStringInFormulaCell_bug44606() {
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
HSSFWorkbook wb = getTestDataProvider().createWorkbook();
|
||||||
HSSFCell cell = wb.createSheet("Sheet1").createRow(0).createCell(0);
|
HSSFCell cell = wb.createSheet("Sheet1").createRow(0).createCell(0);
|
||||||
cell.setCellFormula("B1&C1");
|
cell.setCellFormula("B1&C1");
|
||||||
try {
|
try {
|
||||||
|
@ -35,7 +35,7 @@ public class TestHSSFClientAnchor extends TestCase
|
|||||||
HSSFSheet sheet = wb.createSheet("test");
|
HSSFSheet sheet = wb.createSheet("test");
|
||||||
HSSFClientAnchor a = new HSSFClientAnchor(0,0,1023,255,(short)0,0,(short)0,0);
|
HSSFClientAnchor a = new HSSFClientAnchor(0,0,1023,255,(short)0,0,(short)0,0);
|
||||||
float p = a.getAnchorHeightInPoints(sheet);
|
float p = a.getAnchorHeightInPoints(sheet);
|
||||||
assertEquals(11.953,p,0.001);
|
assertEquals(12.7,p,0.001);
|
||||||
|
|
||||||
sheet.createRow(0).setHeightInPoints(14);
|
sheet.createRow(0).setHeightInPoints(14);
|
||||||
a = new HSSFClientAnchor(0,0,1023,255,(short)0,0,(short)0,0);
|
a = new HSSFClientAnchor(0,0,1023,255,(short)0,0,(short)0,0);
|
||||||
@ -57,7 +57,7 @@ public class TestHSSFClientAnchor extends TestCase
|
|||||||
sheet.createRow(0).setHeightInPoints(12);
|
sheet.createRow(0).setHeightInPoints(12);
|
||||||
a = new HSSFClientAnchor(0,127,1023,127,(short)0,0,(short)0,1);
|
a = new HSSFClientAnchor(0,127,1023,127,(short)0,0,(short)0,1);
|
||||||
p = a.getAnchorHeightInPoints(sheet);
|
p = a.getAnchorHeightInPoints(sheet);
|
||||||
assertEquals(12.0,p,0.001);
|
assertEquals(12.372,p,0.001);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ public class TestHSSFClientAnchor extends TestCase
|
|||||||
new HSSFClientAnchor( 0 , 128 , 0 , 128 ,(short)0, 1,(short)1, 3),
|
new HSSFClientAnchor( 0 , 128 , 0 , 128 ,(short)0, 1,(short)1, 3),
|
||||||
new HSSFClientAnchor( 0 , 0 , 0 , 128 ,(short)0, 1,(short)1, 3),
|
new HSSFClientAnchor( 0 , 0 , 0 , 128 ,(short)0, 1,(short)1, 3),
|
||||||
};
|
};
|
||||||
float[] ref = {24.0f, 18.0f, 24.0f, 30.0f};
|
float[] ref = {25.5f, 19.125f, 25.5f, 31.875f};
|
||||||
for (int i = 0; i < anchor.length; i++) {
|
for (int i = 0; i < anchor.length; i++) {
|
||||||
float height = anchor[i].getAnchorHeightInPoints(sheet);
|
float height = anchor[i].getAnchorHeightInPoints(sheet);
|
||||||
assertEquals(ref[i], height, 0);
|
assertEquals(ref[i], height, 0);
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
@ -15,52 +14,35 @@
|
|||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
==================================================================== */
|
==================================================================== */
|
||||||
|
|
||||||
|
|
||||||
package org.apache.poi.hssf.usermodel;
|
package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import java.util.Date;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
|
||||||
|
import junit.framework.AssertionFailedError;
|
||||||
|
import org.apache.poi.hssf.HSSFITestDataProvider;
|
||||||
import org.apache.poi.hssf.model.Sheet;
|
import org.apache.poi.hssf.model.Sheet;
|
||||||
|
import org.apache.poi.hssf.record.DBCellRecord;
|
||||||
|
import org.apache.poi.hssf.record.FormulaRecord;
|
||||||
|
import org.apache.poi.hssf.record.Record;
|
||||||
|
import org.apache.poi.hssf.record.StringRecord;
|
||||||
|
import org.apache.poi.ss.usermodel.ErrorConstants;
|
||||||
|
import org.apache.poi.ss.usermodel.BaseTestCell;
|
||||||
|
import org.apache.poi.ss.usermodel.BaseTestNamedRange;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests HSSFWorkbook method setSheetOrder()
|
* Tests various functionality having to do with {@link org.apache.poi.hssf.usermodel.HSSFCell}. For instance support for
|
||||||
*
|
* particular datatypes, etc.
|
||||||
*
|
* @author Andrew C. Oliver (andy at superlinksoftware dot com)
|
||||||
* @author Ruel Loehr (loehr1 at us.ibm.com)
|
* @author Dan Sherman (dsherman at isisph.com)
|
||||||
*/
|
* @author Alex Jacoby (ajacoby at gmail.com)
|
||||||
|
*/
|
||||||
public class TestHSSFSheetSetOrder
|
public final class TestHSSFName extends BaseTestNamedRange {
|
||||||
extends TestCase
|
|
||||||
{
|
|
||||||
public TestHSSFSheetSetOrder(String s)
|
|
||||||
{
|
|
||||||
super(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the sheet set order method
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void testBackupRecord()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
|
||||||
|
|
||||||
for (int i=0; i < 10; i++)
|
|
||||||
{
|
|
||||||
HSSFSheet s = wb.createSheet("Sheet " +i);
|
|
||||||
Sheet sheet = s.getSheet();
|
|
||||||
}
|
|
||||||
|
|
||||||
wb.getWorkbook().setSheetOrder("Sheet 6", 0);
|
|
||||||
wb.getWorkbook().setSheetOrder("Sheet 3", 7);
|
|
||||||
wb.getWorkbook().setSheetOrder("Sheet 1", 9);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected HSSFITestDataProvider getTestDataProvider(){
|
||||||
|
return HSSFITestDataProvider.getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -21,36 +21,31 @@ import junit.framework.AssertionFailedError;
|
|||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
|
import org.apache.poi.hssf.HSSFITestDataProvider;
|
||||||
import org.apache.poi.hssf.record.BlankRecord;
|
import org.apache.poi.hssf.record.BlankRecord;
|
||||||
import org.apache.poi.hssf.record.RowRecord;
|
import org.apache.poi.hssf.record.RowRecord;
|
||||||
|
import org.apache.poi.ss.usermodel.BaseTestRow;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test HSSFRow is okay.
|
* Test HSSFRow is okay.
|
||||||
*
|
*
|
||||||
* @author Glen Stampoultzis (glens at apache.org)
|
* @author Glen Stampoultzis (glens at apache.org)
|
||||||
*/
|
*/
|
||||||
public final class TestHSSFRow extends TestCase {
|
public final class TestHSSFRow extends BaseTestRow {
|
||||||
|
|
||||||
public void testLastAndFirstColumns() {
|
@Override
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
protected HSSFITestDataProvider getTestDataProvider(){
|
||||||
HSSFSheet sheet = workbook.createSheet();
|
return HSSFITestDataProvider.getInstance();
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
assertEquals(-1, row.getFirstCellNum());
|
|
||||||
assertEquals(-1, row.getLastCellNum());
|
|
||||||
|
|
||||||
row.createCell(2);
|
|
||||||
assertEquals(2, row.getFirstCellNum());
|
|
||||||
assertEquals(3, row.getLastCellNum());
|
|
||||||
|
|
||||||
row.createCell(1);
|
|
||||||
assertEquals(1, row.getFirstCellNum());
|
|
||||||
assertEquals(3, row.getLastCellNum());
|
|
||||||
|
|
||||||
// check the exact case reported in 'bug' 43901 - notice that the cellNum is '0' based
|
|
||||||
row.createCell(3);
|
|
||||||
assertEquals(1, row.getFirstCellNum());
|
|
||||||
assertEquals(4, row.getLastCellNum());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRowBounds() {
|
||||||
|
baseTestRowBounds(RowRecord.MAX_ROW_NUMBER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCellBounds() {
|
||||||
|
baseTestCellBounds(HSSFCell.LAST_COLUMN_NUMBER);
|
||||||
|
}
|
||||||
|
|
||||||
public void testLastAndFirstColumns_bug46654() {
|
public void testLastAndFirstColumns_bug46654() {
|
||||||
int ROW_IX = 10;
|
int ROW_IX = 10;
|
||||||
int COL_IX = 3;
|
int COL_IX = 3;
|
||||||
@ -78,67 +73,6 @@ public final class TestHSSFRow extends TestCase {
|
|||||||
assertEquals(-1, row.getLastCellNum());
|
assertEquals(-1, row.getLastCellNum());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Make sure that there is no cross-talk between rows especially with getFirstCellNum and getLastCellNum
|
|
||||||
* This test was added in response to bug report 44987.
|
|
||||||
*/
|
|
||||||
public void testBoundsInMultipleRows() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet();
|
|
||||||
HSSFRow rowA = sheet.createRow(0);
|
|
||||||
|
|
||||||
rowA.createCell(10);
|
|
||||||
rowA.createCell(5);
|
|
||||||
assertEquals(5, rowA.getFirstCellNum());
|
|
||||||
assertEquals(11, rowA.getLastCellNum());
|
|
||||||
|
|
||||||
HSSFRow rowB = sheet.createRow(1);
|
|
||||||
rowB.createCell(15);
|
|
||||||
rowB.createCell(30);
|
|
||||||
assertEquals(15, rowB.getFirstCellNum());
|
|
||||||
assertEquals(31, rowB.getLastCellNum());
|
|
||||||
|
|
||||||
assertEquals(5, rowA.getFirstCellNum());
|
|
||||||
assertEquals(11, rowA.getLastCellNum());
|
|
||||||
rowA.createCell(50);
|
|
||||||
assertEquals(51, rowA.getLastCellNum());
|
|
||||||
|
|
||||||
assertEquals(31, rowB.getLastCellNum());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRemoveCell() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet();
|
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
assertEquals(-1, row.getLastCellNum());
|
|
||||||
assertEquals(-1, row.getFirstCellNum());
|
|
||||||
row.createCell(1);
|
|
||||||
assertEquals(2, row.getLastCellNum());
|
|
||||||
assertEquals(1, row.getFirstCellNum());
|
|
||||||
row.createCell(3);
|
|
||||||
assertEquals(4, row.getLastCellNum());
|
|
||||||
assertEquals(1, row.getFirstCellNum());
|
|
||||||
row.removeCell(row.getCell(3));
|
|
||||||
assertEquals(2, row.getLastCellNum());
|
|
||||||
assertEquals(1, row.getFirstCellNum());
|
|
||||||
row.removeCell(row.getCell(1));
|
|
||||||
assertEquals(-1, row.getLastCellNum());
|
|
||||||
assertEquals(-1, row.getFirstCellNum());
|
|
||||||
|
|
||||||
// all cells on this row have been removed
|
|
||||||
// so check the row record actually writes it out as 0's
|
|
||||||
byte[] data = new byte[100];
|
|
||||||
row.getRowRecord().serialize(0, data);
|
|
||||||
assertEquals(0, data[6]);
|
|
||||||
assertEquals(0, data[8]);
|
|
||||||
|
|
||||||
workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
|
|
||||||
sheet = workbook.getSheetAt(0);
|
|
||||||
|
|
||||||
assertEquals(-1, sheet.getRow(0).getLastCellNum());
|
|
||||||
assertEquals(-1, sheet.getRow(0).getFirstCellNum());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testMoveCell() {
|
public void testMoveCell() {
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||||
HSSFSheet sheet = workbook.createSheet();
|
HSSFSheet sheet = workbook.createSheet();
|
||||||
@ -184,149 +118,4 @@ public final class TestHSSFRow extends TestCase {
|
|||||||
assertEquals(2, row.getFirstCellNum());
|
assertEquals(2, row.getFirstCellNum());
|
||||||
assertEquals(6, row.getLastCellNum());
|
assertEquals(6, row.getLastCellNum());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRowBounds() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet();
|
|
||||||
//Test low row bound
|
|
||||||
sheet.createRow(0);
|
|
||||||
//Test low row bound exception
|
|
||||||
try {
|
|
||||||
sheet.createRow(-1);
|
|
||||||
fail("IndexOutOfBoundsException should have been thrown");
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
// expected during successful test
|
|
||||||
assertEquals("Invalid row number (-1) outside allowable range (0..65535)", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
//Test high row bound
|
|
||||||
sheet.createRow(65535);
|
|
||||||
//Test high row bound exception
|
|
||||||
try {
|
|
||||||
sheet.createRow(65536);
|
|
||||||
fail("IndexOutOfBoundsException should have been thrown");
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
// expected during successful test
|
|
||||||
assertEquals("Invalid row number (65536) outside allowable range (0..65535)", e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prior to patch 43901, POI was producing files with the wrong last-column
|
|
||||||
* number on the row
|
|
||||||
*/
|
|
||||||
public void testLastCellNumIsCorrectAfterAddCell_bug43901(){
|
|
||||||
HSSFWorkbook book = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = book.createSheet("test");
|
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
|
|
||||||
// New row has last col -1
|
|
||||||
assertEquals(-1, row.getLastCellNum());
|
|
||||||
if(row.getLastCellNum() == 0) {
|
|
||||||
fail("Identified bug 43901");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create two cells, will return one higher
|
|
||||||
// than that for the last number
|
|
||||||
row.createCell(0);
|
|
||||||
assertEquals(1, row.getLastCellNum());
|
|
||||||
row.createCell(255);
|
|
||||||
assertEquals(256, row.getLastCellNum());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for the missing/blank cell policy stuff
|
|
||||||
*/
|
|
||||||
public void testGetCellPolicy() {
|
|
||||||
HSSFWorkbook book = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = book.createSheet("test");
|
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
|
|
||||||
// 0 -> string
|
|
||||||
// 1 -> num
|
|
||||||
// 2 missing
|
|
||||||
// 3 missing
|
|
||||||
// 4 -> blank
|
|
||||||
// 5 -> num
|
|
||||||
row.createCell(0).setCellValue(new HSSFRichTextString("test"));
|
|
||||||
row.createCell(1).setCellValue(3.2);
|
|
||||||
row.createCell(4, HSSFCell.CELL_TYPE_BLANK);
|
|
||||||
row.createCell(5).setCellValue(4);
|
|
||||||
|
|
||||||
// First up, no policy given, uses default
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_STRING, row.getCell(0).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());
|
|
||||||
assertEquals(null, row.getCell(2));
|
|
||||||
assertEquals(null, row.getCell(3));
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_BLANK, row.getCell(4).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType());
|
|
||||||
|
|
||||||
// RETURN_NULL_AND_BLANK - same as default
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_STRING, row.getCell(0, HSSFRow.RETURN_NULL_AND_BLANK).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(1, HSSFRow.RETURN_NULL_AND_BLANK).getCellType());
|
|
||||||
assertEquals(null, row.getCell(2, HSSFRow.RETURN_NULL_AND_BLANK));
|
|
||||||
assertEquals(null, row.getCell(3, HSSFRow.RETURN_NULL_AND_BLANK));
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_BLANK, row.getCell(4, HSSFRow.RETURN_NULL_AND_BLANK).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(5, HSSFRow.RETURN_NULL_AND_BLANK).getCellType());
|
|
||||||
|
|
||||||
// RETURN_BLANK_AS_NULL - nearly the same
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_STRING, row.getCell(0, HSSFRow.RETURN_BLANK_AS_NULL).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(1, HSSFRow.RETURN_BLANK_AS_NULL).getCellType());
|
|
||||||
assertEquals(null, row.getCell(2, HSSFRow.RETURN_BLANK_AS_NULL));
|
|
||||||
assertEquals(null, row.getCell(3, HSSFRow.RETURN_BLANK_AS_NULL));
|
|
||||||
assertEquals(null, row.getCell(4, HSSFRow.RETURN_BLANK_AS_NULL));
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(5, HSSFRow.RETURN_BLANK_AS_NULL).getCellType());
|
|
||||||
|
|
||||||
// CREATE_NULL_AS_BLANK - creates as needed
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_STRING, row.getCell(0, HSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(1, HSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_BLANK, row.getCell(2, HSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_BLANK, row.getCell(3, HSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_BLANK, row.getCell(4, HSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(5, HSSFRow.CREATE_NULL_AS_BLANK).getCellType());
|
|
||||||
|
|
||||||
// Check created ones get the right column
|
|
||||||
assertEquals(0, row.getCell(0, HSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals(1, row.getCell(1, HSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals(2, row.getCell(2, HSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals(3, row.getCell(3, HSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals(4, row.getCell(4, HSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
assertEquals(5, row.getCell(5, HSSFRow.CREATE_NULL_AS_BLANK).getColumnIndex());
|
|
||||||
|
|
||||||
|
|
||||||
// Now change the cell policy on the workbook, check
|
|
||||||
// that that is now used if no policy given
|
|
||||||
book.setMissingCellPolicy(HSSFRow.RETURN_BLANK_AS_NULL);
|
|
||||||
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_STRING, row.getCell(0).getCellType());
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());
|
|
||||||
assertEquals(null, row.getCell(2));
|
|
||||||
assertEquals(null, row.getCell(3));
|
|
||||||
assertEquals(null, row.getCell(4));
|
|
||||||
assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRowHeight() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet();
|
|
||||||
HSSFRow row1 = sheet.createRow(0);
|
|
||||||
|
|
||||||
assertEquals(0xFF, row1.getHeight());
|
|
||||||
assertEquals(sheet.getDefaultRowHeight(), row1.getHeight());
|
|
||||||
|
|
||||||
HSSFRow row2 = sheet.createRow(1);
|
|
||||||
row2.setHeight((short)400);
|
|
||||||
|
|
||||||
assertEquals(400, row2.getHeight());
|
|
||||||
|
|
||||||
workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
|
|
||||||
sheet = workbook.getSheetAt(0);
|
|
||||||
|
|
||||||
row1 = sheet.getRow(0);
|
|
||||||
assertEquals(0xFF, row1.getHeight());
|
|
||||||
assertEquals(sheet.getDefaultRowHeight(), row1.getHeight());
|
|
||||||
|
|
||||||
row2 = sheet.getRow(1);
|
|
||||||
assertEquals(400, row2.getHeight());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -27,11 +27,13 @@ import junit.framework.AssertionFailedError;
|
|||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
|
import org.apache.poi.hssf.HSSFITestDataProvider;
|
||||||
import org.apache.poi.hssf.model.Sheet;
|
import org.apache.poi.hssf.model.Sheet;
|
||||||
import org.apache.poi.hssf.model.DrawingManager2;
|
import org.apache.poi.hssf.model.DrawingManager2;
|
||||||
import org.apache.poi.hssf.record.*;
|
import org.apache.poi.hssf.record.*;
|
||||||
import org.apache.poi.ss.util.Region;
|
import org.apache.poi.ss.util.Region;
|
||||||
import org.apache.poi.ss.util.CellRangeAddress;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
|
import org.apache.poi.ss.usermodel.BaseTestSheet;
|
||||||
import org.apache.poi.ddf.EscherDgRecord;
|
import org.apache.poi.ddf.EscherDgRecord;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,10 +43,15 @@ import org.apache.poi.ddf.EscherDgRecord;
|
|||||||
* @author Glen Stampoultzis (glens at apache.org)
|
* @author Glen Stampoultzis (glens at apache.org)
|
||||||
* @author Andrew C. Oliver (acoliver apache org)
|
* @author Andrew C. Oliver (acoliver apache org)
|
||||||
*/
|
*/
|
||||||
public final class TestHSSFSheet extends TestCase {
|
public final class TestHSSFSheet extends BaseTestSheet {
|
||||||
|
|
||||||
private static HSSFWorkbook openSample(String sampleFileName) {
|
@Override
|
||||||
return HSSFTestDataSamples.openSampleWorkbook(sampleFileName);
|
protected HSSFITestDataProvider getTestDataProvider(){
|
||||||
|
return HSSFITestDataProvider.getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testTestGetSetMargin() {
|
||||||
|
baseTestGetSetMargin(new double[]{0.75, 0.75, 1.0, 1.0, 0.3, 0.3});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -140,138 +147,11 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
assertEquals(true, s.getRowSumsRight());
|
assertEquals(true, s.getRowSumsRight());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testReadBooleans() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet("Test boolean");
|
|
||||||
HSSFRow row = sheet.createRow(2);
|
|
||||||
HSSFCell cell = row.createCell(9);
|
|
||||||
cell.setCellValue(true);
|
|
||||||
cell = row.createCell(11);
|
|
||||||
cell.setCellValue(true);
|
|
||||||
|
|
||||||
workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
|
|
||||||
|
|
||||||
sheet = workbook.getSheetAt(0);
|
|
||||||
row = sheet.getRow(2);
|
|
||||||
assertNotNull(row);
|
|
||||||
assertEquals(2, row.getPhysicalNumberOfCells());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRemoveRow() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet("Test boolean");
|
|
||||||
HSSFRow row = sheet.createRow(2);
|
|
||||||
sheet.removeRow(row);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRemoveZeroRow() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet("Sheet1");
|
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
try {
|
|
||||||
sheet.removeRow(row);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
if (e.getMessage().equals("Invalid row number (-1) outside allowable range (0..65535)")) {
|
|
||||||
throw new AssertionFailedError("Identified bug 45367");
|
|
||||||
}
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testCloneSheet() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet("Test Clone");
|
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
HSSFCell cell = row.createCell(0);
|
|
||||||
HSSFCell cell2 = row.createCell(1);
|
|
||||||
cell.setCellValue(new HSSFRichTextString("clone_test"));
|
|
||||||
cell2.setCellFormula("sin(1)");
|
|
||||||
|
|
||||||
HSSFSheet clonedSheet = workbook.cloneSheet(0);
|
|
||||||
HSSFRow clonedRow = clonedSheet.getRow(0);
|
|
||||||
|
|
||||||
//Check for a good clone
|
|
||||||
assertEquals(clonedRow.getCell(0).getRichStringCellValue().getString(), "clone_test");
|
|
||||||
|
|
||||||
//Check that the cells are not somehow linked
|
|
||||||
cell.setCellValue(new HSSFRichTextString("Difference Check"));
|
|
||||||
cell2.setCellFormula("cos(2)");
|
|
||||||
if ("Difference Check".equals(clonedRow.getCell(0).getRichStringCellValue().getString())) {
|
|
||||||
fail("string cell not properly cloned");
|
|
||||||
}
|
|
||||||
if ("COS(2)".equals(clonedRow.getCell(1).getCellFormula())) {
|
|
||||||
fail("formula cell not properly cloned");
|
|
||||||
}
|
|
||||||
assertEquals(clonedRow.getCell(0).getRichStringCellValue().getString(), "clone_test");
|
|
||||||
assertEquals(clonedRow.getCell(1).getCellFormula(), "SIN(1)");
|
|
||||||
}
|
|
||||||
|
|
||||||
/** tests that the sheet name for multiple clones of the same sheet is unique
|
|
||||||
* BUG 37416
|
|
||||||
*/
|
|
||||||
public void testCloneSheetMultipleTimes() {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet("Test Clone");
|
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
HSSFCell cell = row.createCell(0);
|
|
||||||
cell.setCellValue(new HSSFRichTextString("clone_test"));
|
|
||||||
//Clone the sheet multiple times
|
|
||||||
workbook.cloneSheet(0);
|
|
||||||
workbook.cloneSheet(0);
|
|
||||||
|
|
||||||
assertNotNull(workbook.getSheet("Test Clone"));
|
|
||||||
assertNotNull(workbook.getSheet("Test Clone (2)"));
|
|
||||||
assertEquals("Test Clone (3)", workbook.getSheetName(2));
|
|
||||||
assertNotNull(workbook.getSheet("Test Clone (3)"));
|
|
||||||
|
|
||||||
workbook.removeSheetAt(0);
|
|
||||||
workbook.removeSheetAt(0);
|
|
||||||
workbook.removeSheetAt(0);
|
|
||||||
workbook.createSheet("abc ( 123)");
|
|
||||||
workbook.cloneSheet(0);
|
|
||||||
assertEquals("abc (124)", workbook.getSheetName(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Setting landscape and portrait stuff on new sheets
|
|
||||||
*/
|
|
||||||
public void testPrintSetupLandscapeNew() throws Exception {
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheetL = workbook.createSheet("LandscapeS");
|
|
||||||
HSSFSheet sheetP = workbook.createSheet("LandscapeP");
|
|
||||||
|
|
||||||
// Check two aspects of the print setup
|
|
||||||
assertFalse(sheetL.getPrintSetup().getLandscape());
|
|
||||||
assertFalse(sheetP.getPrintSetup().getLandscape());
|
|
||||||
assertEquals(0, sheetL.getPrintSetup().getCopies());
|
|
||||||
assertEquals(0, sheetP.getPrintSetup().getCopies());
|
|
||||||
|
|
||||||
// Change one on each
|
|
||||||
sheetL.getPrintSetup().setLandscape(true);
|
|
||||||
sheetP.getPrintSetup().setCopies((short)3);
|
|
||||||
|
|
||||||
// Check taken
|
|
||||||
assertTrue(sheetL.getPrintSetup().getLandscape());
|
|
||||||
assertFalse(sheetP.getPrintSetup().getLandscape());
|
|
||||||
assertEquals(0, sheetL.getPrintSetup().getCopies());
|
|
||||||
assertEquals(3, sheetP.getPrintSetup().getCopies());
|
|
||||||
|
|
||||||
// Save and re-load, and check still there
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
||||||
workbook.write(baos);
|
|
||||||
workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
|
|
||||||
|
|
||||||
assertTrue(sheetL.getPrintSetup().getLandscape());
|
|
||||||
assertFalse(sheetP.getPrintSetup().getLandscape());
|
|
||||||
assertEquals(0, sheetL.getPrintSetup().getCopies());
|
|
||||||
assertEquals(3, sheetP.getPrintSetup().getCopies());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setting landscape and portrait stuff on existing sheets
|
* Setting landscape and portrait stuff on existing sheets
|
||||||
*/
|
*/
|
||||||
public void testPrintSetupLandscapeExisting() {
|
public void testPrintSetupLandscapeExisting() {
|
||||||
HSSFWorkbook workbook = openSample("SimpleWithPageBreaks.xls");
|
HSSFWorkbook workbook = getTestDataProvider().openSampleWorkbook("SimpleWithPageBreaks.xls");
|
||||||
|
|
||||||
assertEquals(3, workbook.getNumberOfSheets());
|
assertEquals(3, workbook.getNumberOfSheets());
|
||||||
|
|
||||||
@ -352,7 +232,7 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testGroupRowsExisting() {
|
public void testGroupRowsExisting() {
|
||||||
HSSFWorkbook workbook = openSample("NoGutsRecords.xls");
|
HSSFWorkbook workbook = getTestDataProvider().openSampleWorkbook("NoGutsRecords.xls");
|
||||||
|
|
||||||
HSSFSheet s = workbook.getSheetAt(0);
|
HSSFSheet s = workbook.getSheetAt(0);
|
||||||
HSSFRow r1 = s.getRow(0);
|
HSSFRow r1 = s.getRow(0);
|
||||||
@ -403,8 +283,8 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testGetDrawings() {
|
public void testGetDrawings() {
|
||||||
HSSFWorkbook wb1c = openSample("WithChart.xls");
|
HSSFWorkbook wb1c = getTestDataProvider().openSampleWorkbook("WithChart.xls");
|
||||||
HSSFWorkbook wb2c = openSample("WithTwoCharts.xls");
|
HSSFWorkbook wb2c = getTestDataProvider().openSampleWorkbook("WithTwoCharts.xls");
|
||||||
|
|
||||||
// 1 chart sheet -> data on 1st, chart on 2nd
|
// 1 chart sheet -> data on 1st, chart on 2nd
|
||||||
assertNotNull(wb1c.getSheetAt(0).getDrawingPatriarch());
|
assertNotNull(wb1c.getSheetAt(0).getDrawingPatriarch());
|
||||||
@ -476,94 +356,12 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
* When removing one merged region, it would break
|
* When removing one merged region, it would break
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public void testRemoveMerged() {
|
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = wb.createSheet();
|
|
||||||
CellRangeAddress region = new CellRangeAddress(0, 1, 0, 1);
|
|
||||||
sheet.addMergedRegion(region);
|
|
||||||
region = new CellRangeAddress(1, 2, 0, 1);
|
|
||||||
sheet.addMergedRegion(region);
|
|
||||||
|
|
||||||
sheet.removeMergedRegion(0);
|
|
||||||
|
|
||||||
region = sheet.getMergedRegion(0);
|
|
||||||
assertEquals("Left over region should be starting at row 1", 1, region.getFirstRow());
|
|
||||||
|
|
||||||
sheet.removeMergedRegion(0);
|
|
||||||
|
|
||||||
assertEquals("there should be no merged regions left!", 0, sheet.getNumMergedRegions());
|
|
||||||
|
|
||||||
//an, add, remove, get(0) would null pointer
|
|
||||||
sheet.addMergedRegion(region);
|
|
||||||
assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
|
|
||||||
sheet.removeMergedRegion(0);
|
|
||||||
assertEquals("there should now be zero merged regions!", 0, sheet.getNumMergedRegions());
|
|
||||||
//add it again!
|
|
||||||
region.setLastRow(4);
|
|
||||||
|
|
||||||
sheet.addMergedRegion(region);
|
|
||||||
assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
|
|
||||||
|
|
||||||
//should exist now!
|
|
||||||
assertTrue("there isn't more than one merged region in there", 1 <= sheet.getNumMergedRegions());
|
|
||||||
region = sheet.getMergedRegion(0);
|
|
||||||
assertEquals("the merged row to doesnt match the one we put in ", 4, region.getLastRow());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testShiftMerged() {
|
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = wb.createSheet();
|
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
HSSFCell cell = row.createCell(0);
|
|
||||||
cell.setCellValue(new HSSFRichTextString("first row, first cell"));
|
|
||||||
|
|
||||||
row = sheet.createRow(1);
|
|
||||||
cell = row.createCell(1);
|
|
||||||
cell.setCellValue(new HSSFRichTextString("second row, second cell"));
|
|
||||||
|
|
||||||
CellRangeAddress region = new CellRangeAddress(1, 1, 0, 1);
|
|
||||||
sheet.addMergedRegion(region);
|
|
||||||
|
|
||||||
sheet.shiftRows(1, 1, 1);
|
|
||||||
|
|
||||||
region = sheet.getMergedRegion(0);
|
|
||||||
assertEquals("Merged region not moved over to row 2", 2, region.getFirstRow());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests the display of gridlines, formulas, and rowcolheadings.
|
|
||||||
* @author Shawn Laubach (slaubach at apache dot org)
|
|
||||||
*/
|
|
||||||
public void testDisplayOptions() {
|
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = wb.createSheet();
|
|
||||||
|
|
||||||
assertEquals(sheet.isDisplayGridlines(), true);
|
|
||||||
assertEquals(sheet.isDisplayRowColHeadings(), true);
|
|
||||||
assertEquals(sheet.isDisplayFormulas(), false);
|
|
||||||
assertEquals(sheet.isDisplayZeros(), true);
|
|
||||||
|
|
||||||
sheet.setDisplayGridlines(false);
|
|
||||||
sheet.setDisplayRowColHeadings(false);
|
|
||||||
sheet.setDisplayFormulas(true);
|
|
||||||
sheet.setDisplayZeros(false);
|
|
||||||
|
|
||||||
wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
|
|
||||||
sheet = wb.getSheetAt(0);
|
|
||||||
|
|
||||||
assertEquals(sheet.isDisplayGridlines(), false);
|
|
||||||
assertEquals(sheet.isDisplayRowColHeadings(), false);
|
|
||||||
assertEquals(sheet.isDisplayFormulas(), true);
|
|
||||||
assertEquals(sheet.isDisplayZeros(), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure the excel file loads work
|
* Make sure the excel file loads work
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public void testPageBreakFiles() {
|
public void testPageBreakFiles() {
|
||||||
HSSFWorkbook wb = openSample("SimpleWithPageBreaks.xls");
|
HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("SimpleWithPageBreaks.xls");
|
||||||
|
|
||||||
HSSFSheet sheet = wb.getSheetAt(0);
|
HSSFSheet sheet = wb.getSheetAt(0);
|
||||||
assertNotNull(sheet);
|
assertNotNull(sheet);
|
||||||
@ -591,7 +389,7 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testDBCSName () {
|
public void testDBCSName () {
|
||||||
HSSFWorkbook wb = openSample("DBCSSheetName.xls");
|
HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("DBCSSheetName.xls");
|
||||||
wb.getSheetAt(1);
|
wb.getSheetAt(1);
|
||||||
assertEquals ("DBCS Sheet Name 2", wb.getSheetName(1),"\u090f\u0915" );
|
assertEquals ("DBCS Sheet Name 2", wb.getSheetName(1),"\u090f\u0915" );
|
||||||
assertEquals("DBCS Sheet Name 1", wb.getSheetName(0),"\u091c\u093e");
|
assertEquals("DBCS Sheet Name 1", wb.getSheetName(0),"\u091c\u093e");
|
||||||
@ -603,7 +401,7 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
* of the sheet when it is first opened.
|
* of the sheet when it is first opened.
|
||||||
*/
|
*/
|
||||||
public void testTopRow() {
|
public void testTopRow() {
|
||||||
HSSFWorkbook wb = openSample("SimpleWithPageBreaks.xls");
|
HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("SimpleWithPageBreaks.xls");
|
||||||
|
|
||||||
HSSFSheet sheet = wb.getSheetAt(0);
|
HSSFSheet sheet = wb.getSheetAt(0);
|
||||||
assertNotNull(sheet);
|
assertNotNull(sheet);
|
||||||
@ -630,18 +428,6 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
assertEquals("formula", r.getCell(1).getCellFormula(), "A1*2");
|
assertEquals("formula", r.getCell(1).getCellFormula(), "A1*2");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** test that new default column styles get applied */
|
|
||||||
public void testDefaultColumnStyle() {
|
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
|
||||||
HSSFCellStyle style = wb.createCellStyle();
|
|
||||||
HSSFSheet s = wb.createSheet();
|
|
||||||
s.setDefaultColumnStyle((short) 0, style);
|
|
||||||
HSSFRow r = s.createRow(0);
|
|
||||||
HSSFCell c = r.createCell(0);
|
|
||||||
assertEquals("style should match", style.getIndex(), c.getCellStyle().getIndex());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -656,7 +442,7 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
|
workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
|
||||||
|
|
||||||
//try adding empty rows in an existing worksheet
|
//try adding empty rows in an existing worksheet
|
||||||
workbook = openSample("Simple.xls");
|
workbook = getTestDataProvider().openSampleWorkbook("Simple.xls");
|
||||||
|
|
||||||
sheet = workbook.getSheetAt(0);
|
sheet = workbook.getSheetAt(0);
|
||||||
for (int i = 3; i < 10; i++) sheet.createRow(i);
|
for (int i = 3; i < 10; i++) sheet.createRow(i);
|
||||||
@ -665,7 +451,7 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testAutoSizeColumn() {
|
public void testAutoSizeColumn() {
|
||||||
HSSFWorkbook wb = openSample("43902.xls");
|
HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("43902.xls");
|
||||||
String sheetName = "my sheet";
|
String sheetName = "my sheet";
|
||||||
HSSFSheet sheet = wb.getSheet(sheetName);
|
HSSFSheet sheet = wb.getSheet(sheetName);
|
||||||
|
|
||||||
@ -709,7 +495,7 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
* Setting ForceFormulaRecalculation on sheets
|
* Setting ForceFormulaRecalculation on sheets
|
||||||
*/
|
*/
|
||||||
public void testForceRecalculation() throws Exception {
|
public void testForceRecalculation() throws Exception {
|
||||||
HSSFWorkbook workbook = openSample("UncalcedRecord.xls");
|
HSSFWorkbook workbook = getTestDataProvider().openSampleWorkbook("UncalcedRecord.xls");
|
||||||
|
|
||||||
HSSFSheet sheet = workbook.getSheetAt(0);
|
HSSFSheet sheet = workbook.getSheetAt(0);
|
||||||
HSSFSheet sheet2 = workbook.getSheetAt(0);
|
HSSFSheet sheet2 = workbook.getSheetAt(0);
|
||||||
@ -778,7 +564,7 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
|
|
||||||
public void testColumnWidth() {
|
public void testColumnWidth() {
|
||||||
//check we can correctly read column widths from a reference workbook
|
//check we can correctly read column widths from a reference workbook
|
||||||
HSSFWorkbook wb = openSample("colwidth.xls");
|
HSSFWorkbook wb = getTestDataProvider().openSampleWorkbook("colwidth.xls");
|
||||||
|
|
||||||
//reference values
|
//reference values
|
||||||
int[] ref = {365, 548, 731, 914, 1097, 1280, 1462, 1645, 1828, 2011, 2194, 2377, 2560, 2742, 2925, 3108, 3291, 3474, 3657};
|
int[] ref = {365, 548, 731, 914, 1097, 1280, 1462, 1645, 1828, 2011, 2194, 2377, 2560, 2742, 2925, 3108, 3291, 3474, 3657};
|
||||||
@ -950,4 +736,5 @@ public final class TestHSSFSheet extends TestCase {
|
|||||||
assertFalse(cs.getFont(wbComplex).getItalic());
|
assertFalse(cs.getFont(wbComplex).getItalic());
|
||||||
assertEquals(HSSFFont.BOLDWEIGHT_BOLD, cs.getFont(wbComplex).getBoldweight());
|
assertEquals(HSSFFont.BOLDWEIGHT_BOLD, cs.getFont(wbComplex).getBoldweight());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,113 +0,0 @@
|
|||||||
|
|
||||||
/* ====================================================================
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
==================================================================== */
|
|
||||||
|
|
||||||
|
|
||||||
package org.apache.poi.hssf.usermodel;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
|
|
||||||
import org.apache.poi.hssf.model.Sheet;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests HSSFWorkbook method setSheetOrder()
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @author Ruel Loehr (loehr1 at us.ibm.com)
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class TestHSSFSheetOrder
|
|
||||||
extends TestCase
|
|
||||||
{
|
|
||||||
public TestHSSFSheetOrder(String s)
|
|
||||||
{
|
|
||||||
super(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the sheet set order method
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void testBackupRecord()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
|
||||||
|
|
||||||
for (int i=0; i < 10; i++)
|
|
||||||
{
|
|
||||||
HSSFSheet s = wb.createSheet("Sheet " + i);
|
|
||||||
Sheet sheet = s.getSheet();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check the initial order
|
|
||||||
assertEquals(0, wb.getSheetIndex("Sheet 0"));
|
|
||||||
assertEquals(1, wb.getSheetIndex("Sheet 1"));
|
|
||||||
assertEquals(2, wb.getSheetIndex("Sheet 2"));
|
|
||||||
assertEquals(3, wb.getSheetIndex("Sheet 3"));
|
|
||||||
assertEquals(4, wb.getSheetIndex("Sheet 4"));
|
|
||||||
assertEquals(5, wb.getSheetIndex("Sheet 5"));
|
|
||||||
assertEquals(6, wb.getSheetIndex("Sheet 6"));
|
|
||||||
assertEquals(7, wb.getSheetIndex("Sheet 7"));
|
|
||||||
assertEquals(8, wb.getSheetIndex("Sheet 8"));
|
|
||||||
assertEquals(9, wb.getSheetIndex("Sheet 9"));
|
|
||||||
|
|
||||||
// Change
|
|
||||||
wb.getWorkbook().setSheetOrder("Sheet 6", 0);
|
|
||||||
wb.getWorkbook().setSheetOrder("Sheet 3", 7);
|
|
||||||
wb.getWorkbook().setSheetOrder("Sheet 1", 9);
|
|
||||||
|
|
||||||
// Check they're currently right
|
|
||||||
assertEquals(0, wb.getSheetIndex("Sheet 6"));
|
|
||||||
assertEquals(1, wb.getSheetIndex("Sheet 0"));
|
|
||||||
assertEquals(2, wb.getSheetIndex("Sheet 2"));
|
|
||||||
assertEquals(3, wb.getSheetIndex("Sheet 4"));
|
|
||||||
assertEquals(4, wb.getSheetIndex("Sheet 5"));
|
|
||||||
assertEquals(5, wb.getSheetIndex("Sheet 7"));
|
|
||||||
assertEquals(6, wb.getSheetIndex("Sheet 3"));
|
|
||||||
assertEquals(7, wb.getSheetIndex("Sheet 8"));
|
|
||||||
assertEquals(8, wb.getSheetIndex("Sheet 9"));
|
|
||||||
assertEquals(9, wb.getSheetIndex("Sheet 1"));
|
|
||||||
|
|
||||||
// Read it in and see if it is correct.
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
||||||
wb.write(baos);
|
|
||||||
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
|
||||||
HSSFWorkbook wbr = new HSSFWorkbook(bais);
|
|
||||||
|
|
||||||
assertEquals(0, wbr.getSheetIndex("Sheet 6"));
|
|
||||||
assertEquals(1, wbr.getSheetIndex("Sheet 0"));
|
|
||||||
assertEquals(2, wbr.getSheetIndex("Sheet 2"));
|
|
||||||
assertEquals(3, wbr.getSheetIndex("Sheet 4"));
|
|
||||||
assertEquals(4, wbr.getSheetIndex("Sheet 5"));
|
|
||||||
assertEquals(5, wbr.getSheetIndex("Sheet 7"));
|
|
||||||
assertEquals(6, wbr.getSheetIndex("Sheet 3"));
|
|
||||||
assertEquals(7, wbr.getSheetIndex("Sheet 8"));
|
|
||||||
assertEquals(8, wbr.getSheetIndex("Sheet 9"));
|
|
||||||
assertEquals(9, wbr.getSheetIndex("Sheet 1"));
|
|
||||||
|
|
||||||
// Now get the index by the sheet, not the name
|
|
||||||
for(int i=0; i<10; i++) {
|
|
||||||
HSSFSheet s = wbr.getSheetAt(i);
|
|
||||||
assertEquals(i, wbr.getSheetIndex(s));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -26,6 +26,7 @@ import junit.framework.AssertionFailedError;
|
|||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
|
import org.apache.poi.hssf.HSSFITestDataProvider;
|
||||||
import org.apache.poi.hssf.model.HSSFFormulaParser;
|
import org.apache.poi.hssf.model.HSSFFormulaParser;
|
||||||
import org.apache.poi.hssf.model.Sheet;
|
import org.apache.poi.hssf.model.Sheet;
|
||||||
import org.apache.poi.hssf.record.NameRecord;
|
import org.apache.poi.hssf.record.NameRecord;
|
||||||
@ -36,12 +37,15 @@ import org.apache.poi.hssf.record.WindowOneRecord;
|
|||||||
import org.apache.poi.hssf.record.formula.Area3DPtg;
|
import org.apache.poi.hssf.record.formula.Area3DPtg;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.TempFile;
|
import org.apache.poi.util.TempFile;
|
||||||
|
import org.apache.poi.ss.usermodel.BaseTestWorkbook;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link HSSFWorkbook}
|
* Tests for {@link HSSFWorkbook}
|
||||||
*/
|
*/
|
||||||
public final class TestHSSFWorkbook extends TestCase {
|
public final class TestHSSFWorkbook extends BaseTestWorkbook {
|
||||||
private static HSSFWorkbook openSample(String sampleFileName) {
|
@Override
|
||||||
return HSSFTestDataSamples.openSampleWorkbook(sampleFileName);
|
protected HSSFITestDataProvider getTestDataProvider(){
|
||||||
|
return HSSFITestDataProvider.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSetRepeatingRowsAndColumns() {
|
public void testSetRepeatingRowsAndColumns() {
|
||||||
@ -72,44 +76,6 @@ public final class TestHSSFWorkbook extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDuplicateNames() {
|
|
||||||
HSSFWorkbook b = new HSSFWorkbook( );
|
|
||||||
b.createSheet("Sheet1");
|
|
||||||
b.createSheet();
|
|
||||||
b.createSheet("name1");
|
|
||||||
try {
|
|
||||||
b.createSheet("name1");
|
|
||||||
fail();
|
|
||||||
} catch (IllegalArgumentException pass) {
|
|
||||||
// expected during successful test
|
|
||||||
}
|
|
||||||
b.createSheet();
|
|
||||||
try {
|
|
||||||
b.setSheetName(3, "name1");
|
|
||||||
fail();
|
|
||||||
} catch (IllegalArgumentException pass) {
|
|
||||||
// expected during successful test
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
b.setSheetName(3, "name1");
|
|
||||||
fail();
|
|
||||||
} catch (IllegalArgumentException pass) {
|
|
||||||
// expected during successful test
|
|
||||||
}
|
|
||||||
|
|
||||||
b.setSheetName( 3, "name2" );
|
|
||||||
b.setSheetName( 3, "name2" );
|
|
||||||
b.setSheetName( 3, "name2" );
|
|
||||||
|
|
||||||
HSSFWorkbook c = new HSSFWorkbook( );
|
|
||||||
c.createSheet("Sheet1");
|
|
||||||
c.createSheet("Sheet2");
|
|
||||||
c.createSheet("Sheet3");
|
|
||||||
c.createSheet("Sheet4");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testWindowOneDefaults() {
|
public void testWindowOneDefaults() {
|
||||||
HSSFWorkbook b = new HSSFWorkbook( );
|
HSSFWorkbook b = new HSSFWorkbook( );
|
||||||
try {
|
try {
|
||||||
@ -147,17 +113,6 @@ public final class TestHSSFWorkbook extends TestCase {
|
|||||||
assertEquals(false, w1.getHidden());
|
assertEquals(false, w1.getHidden());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSheetSelection() {
|
|
||||||
HSSFWorkbook b = new HSSFWorkbook();
|
|
||||||
b.createSheet("Sheet One");
|
|
||||||
b.createSheet("Sheet Two");
|
|
||||||
b.setActiveSheet(1);
|
|
||||||
b.setSelectedTab(1);
|
|
||||||
b.setFirstVisibleTab(1);
|
|
||||||
assertEquals(1, b.getActiveSheetIndex());
|
|
||||||
assertEquals(1, b.getFirstVisibleTab());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSheetClone() {
|
public void testSheetClone() {
|
||||||
// First up, try a simple file
|
// First up, try a simple file
|
||||||
HSSFWorkbook b = new HSSFWorkbook();
|
HSSFWorkbook b = new HSSFWorkbook();
|
||||||
@ -170,7 +125,7 @@ public final class TestHSSFWorkbook extends TestCase {
|
|||||||
assertEquals(3, b.getNumberOfSheets());
|
assertEquals(3, b.getNumberOfSheets());
|
||||||
|
|
||||||
// Now try a problem one with drawing records in it
|
// Now try a problem one with drawing records in it
|
||||||
b = openSample("SheetWithDrawing.xls");
|
b = getTestDataProvider().openSampleWorkbook("SheetWithDrawing.xls");
|
||||||
assertEquals(1, b.getNumberOfSheets());
|
assertEquals(1, b.getNumberOfSheets());
|
||||||
b.cloneSheet(0);
|
b.cloneSheet(0);
|
||||||
assertEquals(2, b.getNumberOfSheets());
|
assertEquals(2, b.getNumberOfSheets());
|
||||||
@ -181,7 +136,7 @@ public final class TestHSSFWorkbook extends TestCase {
|
|||||||
HSSFSheet s;
|
HSSFSheet s;
|
||||||
|
|
||||||
// Single chart, two sheets
|
// Single chart, two sheets
|
||||||
b = openSample("44010-SingleChart.xls");
|
b = getTestDataProvider().openSampleWorkbook("44010-SingleChart.xls");
|
||||||
assertEquals(2, b.getNumberOfSheets());
|
assertEquals(2, b.getNumberOfSheets());
|
||||||
assertEquals("Graph2", b.getSheetName(1));
|
assertEquals("Graph2", b.getSheetName(1));
|
||||||
s = b.getSheetAt(1);
|
s = b.getSheetAt(1);
|
||||||
@ -197,7 +152,7 @@ public final class TestHSSFWorkbook extends TestCase {
|
|||||||
// We've now called getDrawingPatriarch() so
|
// We've now called getDrawingPatriarch() so
|
||||||
// everything will be all screwy
|
// everything will be all screwy
|
||||||
// So, start again
|
// So, start again
|
||||||
b = openSample("44010-SingleChart.xls");
|
b = getTestDataProvider().openSampleWorkbook("44010-SingleChart.xls");
|
||||||
|
|
||||||
b = writeRead(b);
|
b = writeRead(b);
|
||||||
assertEquals(2, b.getNumberOfSheets());
|
assertEquals(2, b.getNumberOfSheets());
|
||||||
@ -207,7 +162,7 @@ public final class TestHSSFWorkbook extends TestCase {
|
|||||||
|
|
||||||
|
|
||||||
// Two charts, three sheets
|
// Two charts, three sheets
|
||||||
b = openSample("44010-TwoCharts.xls");
|
b = getTestDataProvider().openSampleWorkbook("44010-TwoCharts.xls");
|
||||||
assertEquals(3, b.getNumberOfSheets());
|
assertEquals(3, b.getNumberOfSheets());
|
||||||
|
|
||||||
s = b.getSheetAt(1);
|
s = b.getSheetAt(1);
|
||||||
@ -227,7 +182,7 @@ public final class TestHSSFWorkbook extends TestCase {
|
|||||||
// We've now called getDrawingPatriarch() so
|
// We've now called getDrawingPatriarch() so
|
||||||
// everything will be all screwy
|
// everything will be all screwy
|
||||||
// So, start again
|
// So, start again
|
||||||
b = openSample("44010-TwoCharts.xls");
|
b = getTestDataProvider().openSampleWorkbook("44010-TwoCharts.xls");
|
||||||
|
|
||||||
b = writeRead(b);
|
b = writeRead(b);
|
||||||
assertEquals(3, b.getNumberOfSheets());
|
assertEquals(3, b.getNumberOfSheets());
|
||||||
@ -434,7 +389,7 @@ public final class TestHSSFWorkbook extends TestCase {
|
|||||||
* that point to deleted sheets
|
* that point to deleted sheets
|
||||||
*/
|
*/
|
||||||
public void testNamesToDeleteSheets() {
|
public void testNamesToDeleteSheets() {
|
||||||
HSSFWorkbook b = openSample("30978-deleted.xls");
|
HSSFWorkbook b = getTestDataProvider().openSampleWorkbook("30978-deleted.xls");
|
||||||
assertEquals(3, b.getNumberOfNames());
|
assertEquals(3, b.getNumberOfNames());
|
||||||
|
|
||||||
// Sheet 2 is deleted
|
// Sheet 2 is deleted
|
||||||
|
@ -546,29 +546,4 @@ public final class TestWorkbook extends TestCase {
|
|||||||
assertTrue("file exists",file.exists());
|
assertTrue("file exists",file.exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testParentReferences(){
|
|
||||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
||||||
HSSFSheet sheet = workbook.createSheet();
|
|
||||||
assertSame(workbook, sheet.getWorkbook());
|
|
||||||
|
|
||||||
HSSFRow row = sheet.createRow(0);
|
|
||||||
assertSame(sheet, row.getSheet());
|
|
||||||
|
|
||||||
HSSFCell cell = row.createCell(1);
|
|
||||||
assertSame(sheet, cell.getSheet());
|
|
||||||
assertSame(row, cell.getRow());
|
|
||||||
|
|
||||||
workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
|
|
||||||
sheet = workbook.getSheetAt(0);
|
|
||||||
assertSame(workbook, sheet.getWorkbook());
|
|
||||||
|
|
||||||
row = sheet.getRow(0);
|
|
||||||
assertSame(sheet, row.getSheet());
|
|
||||||
|
|
||||||
cell = row.getCell(1);
|
|
||||||
assertSame(sheet, cell.getSheet());
|
|
||||||
assertSame(row, cell.getRow());
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,12 @@ import junit.framework.TestCase;
|
|||||||
import junit.framework.AssertionFailedError;
|
import junit.framework.AssertionFailedError;
|
||||||
import org.apache.poi.ss.ITestDataProvider;
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Common superclass for testing {@link org.apache.poi.xssf.usermodel.XSSFCell} and
|
* Common superclass for testing implementatiosn of
|
||||||
* {@link org.apache.poi.hssf.usermodel.HSSFCell}
|
* {@link org.apache.poi.ss.usermodel.Cell}
|
||||||
*/
|
*/
|
||||||
public abstract class BaseTestCell extends TestCase {
|
public abstract class BaseTestCell extends TestCase {
|
||||||
|
|
||||||
@ -32,7 +35,7 @@ public abstract class BaseTestCell extends TestCase {
|
|||||||
*/
|
*/
|
||||||
protected abstract ITestDataProvider getTestDataProvider();
|
protected abstract ITestDataProvider getTestDataProvider();
|
||||||
|
|
||||||
public void baseTestSetValues() {
|
public void testSetValues() {
|
||||||
Workbook book = getTestDataProvider().createWorkbook();
|
Workbook book = getTestDataProvider().createWorkbook();
|
||||||
Sheet sheet = book.createSheet("test");
|
Sheet sheet = book.createSheet("test");
|
||||||
Row row = sheet.createRow(0);
|
Row row = sheet.createRow(0);
|
||||||
@ -43,24 +46,87 @@ public abstract class BaseTestCell extends TestCase {
|
|||||||
cell.setCellValue(1.2);
|
cell.setCellValue(1.2);
|
||||||
assertEquals(1.2, cell.getNumericCellValue(), 0.0001);
|
assertEquals(1.2, cell.getNumericCellValue(), 0.0001);
|
||||||
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
|
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
|
||||||
|
assertProhibitedValueAccess(cell, Cell.CELL_TYPE_BOOLEAN, Cell.CELL_TYPE_STRING,
|
||||||
|
Cell.CELL_TYPE_FORMULA, Cell.CELL_TYPE_ERROR);
|
||||||
|
|
||||||
cell.setCellValue(false);
|
cell.setCellValue(false);
|
||||||
assertEquals(false, cell.getBooleanCellValue());
|
assertEquals(false, cell.getBooleanCellValue());
|
||||||
assertEquals(Cell.CELL_TYPE_BOOLEAN, cell.getCellType());
|
assertEquals(Cell.CELL_TYPE_BOOLEAN, cell.getCellType());
|
||||||
|
cell.setCellValue(true);
|
||||||
|
assertEquals(true, cell.getBooleanCellValue());
|
||||||
|
assertProhibitedValueAccess(cell, Cell.CELL_TYPE_NUMERIC, Cell.CELL_TYPE_STRING,
|
||||||
|
Cell.CELL_TYPE_FORMULA, Cell.CELL_TYPE_ERROR);
|
||||||
|
|
||||||
cell.setCellValue(factory.createRichTextString("Foo"));
|
cell.setCellValue(factory.createRichTextString("Foo"));
|
||||||
assertEquals("Foo", cell.getRichStringCellValue().getString());
|
assertEquals("Foo", cell.getRichStringCellValue().getString());
|
||||||
|
assertEquals("Foo", cell.getStringCellValue());
|
||||||
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType());
|
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType());
|
||||||
|
assertProhibitedValueAccess(cell, Cell.CELL_TYPE_NUMERIC, Cell.CELL_TYPE_BOOLEAN,
|
||||||
|
Cell.CELL_TYPE_FORMULA, Cell.CELL_TYPE_ERROR);
|
||||||
|
|
||||||
cell.setCellValue(factory.createRichTextString("345"));
|
cell.setCellValue("345");
|
||||||
assertEquals("345", cell.getRichStringCellValue().getString());
|
assertEquals("345", cell.getRichStringCellValue().getString());
|
||||||
|
assertEquals("345", cell.getStringCellValue());
|
||||||
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType());
|
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType());
|
||||||
|
assertProhibitedValueAccess(cell, Cell.CELL_TYPE_NUMERIC, Cell.CELL_TYPE_BOOLEAN,
|
||||||
|
Cell.CELL_TYPE_FORMULA, Cell.CELL_TYPE_ERROR);
|
||||||
|
|
||||||
|
Calendar c = Calendar.getInstance();
|
||||||
|
c.setTimeInMillis(123456789);
|
||||||
|
cell.setCellValue(c.getTime());
|
||||||
|
assertEquals(c.getTime().getTime(), cell.getDateCellValue().getTime());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
|
||||||
|
assertProhibitedValueAccess(cell, Cell.CELL_TYPE_BOOLEAN, Cell.CELL_TYPE_STRING,
|
||||||
|
Cell.CELL_TYPE_FORMULA, Cell.CELL_TYPE_ERROR);
|
||||||
|
|
||||||
|
cell.setCellValue(c);
|
||||||
|
assertEquals(c.getTime().getTime(), cell.getDateCellValue().getTime());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
|
||||||
|
assertProhibitedValueAccess(cell, Cell.CELL_TYPE_BOOLEAN, Cell.CELL_TYPE_STRING,
|
||||||
|
Cell.CELL_TYPE_FORMULA, Cell.CELL_TYPE_ERROR);
|
||||||
|
|
||||||
|
cell.setCellErrorValue(FormulaError.NA.getCode());
|
||||||
|
assertEquals(FormulaError.NA.getCode(), cell.getErrorCellValue());
|
||||||
|
assertEquals(Cell.CELL_TYPE_ERROR, cell.getCellType());
|
||||||
|
assertProhibitedValueAccess(cell, Cell.CELL_TYPE_NUMERIC, Cell.CELL_TYPE_BOOLEAN,
|
||||||
|
Cell.CELL_TYPE_FORMULA, Cell.CELL_TYPE_STRING);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertProhibitedValueAccess(Cell cell, int ... types){
|
||||||
|
for(int type : types){
|
||||||
|
try {
|
||||||
|
switch (type) {
|
||||||
|
case Cell.CELL_TYPE_NUMERIC:
|
||||||
|
cell.getNumericCellValue();
|
||||||
|
fail();
|
||||||
|
break;
|
||||||
|
case Cell.CELL_TYPE_STRING:
|
||||||
|
cell.getStringCellValue();
|
||||||
|
fail();
|
||||||
|
break;
|
||||||
|
case Cell.CELL_TYPE_BOOLEAN:
|
||||||
|
cell.getBooleanCellValue();
|
||||||
|
fail();
|
||||||
|
break;
|
||||||
|
case Cell.CELL_TYPE_FORMULA:
|
||||||
|
cell.getCellFormula();
|
||||||
|
fail();
|
||||||
|
break;
|
||||||
|
case Cell.CELL_TYPE_ERROR:
|
||||||
|
cell.getErrorCellValue();
|
||||||
|
fail();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (IllegalStateException e){
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test that Boolean and Error types (BoolErrRecord) are supported properly.
|
* test that Boolean and Error types (BoolErrRecord) are supported properly.
|
||||||
*/
|
*/
|
||||||
public void baseTestBoolErr() {
|
public void testBoolErr() {
|
||||||
|
|
||||||
Workbook wb = getTestDataProvider().createWorkbook();
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
Sheet s = wb.createSheet("testSheet1");
|
Sheet s = wb.createSheet("testSheet1");
|
||||||
@ -101,7 +167,7 @@ public abstract class BaseTestCell extends TestCase {
|
|||||||
/**
|
/**
|
||||||
* test that Cell Styles being applied to formulas remain intact
|
* test that Cell Styles being applied to formulas remain intact
|
||||||
*/
|
*/
|
||||||
public void baseTestFormulaStyle() {
|
public void testFormulaStyle() {
|
||||||
|
|
||||||
Workbook wb = getTestDataProvider().createWorkbook();
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
Sheet s = wb.createSheet("testSheet1");
|
Sheet s = wb.createSheet("testSheet1");
|
||||||
@ -142,7 +208,7 @@ public abstract class BaseTestCell extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**tests the toString() method of HSSFCell*/
|
/**tests the toString() method of HSSFCell*/
|
||||||
public void baseTestToString() {
|
public void testToString() {
|
||||||
Workbook wb = getTestDataProvider().createWorkbook();
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
Row r = wb.createSheet("Sheet1").createRow(0);
|
Row r = wb.createSheet("Sheet1").createRow(0);
|
||||||
CreationHelper factory = wb.getCreationHelper();
|
CreationHelper factory = wb.getCreationHelper();
|
||||||
@ -173,7 +239,7 @@ public abstract class BaseTestCell extends TestCase {
|
|||||||
/**
|
/**
|
||||||
* Test that setting cached formula result keeps the cell type
|
* Test that setting cached formula result keeps the cell type
|
||||||
*/
|
*/
|
||||||
public void baseTestSetFormulaValue() {
|
public void testSetFormulaValue() {
|
||||||
Workbook wb = getTestDataProvider().createWorkbook();
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
Sheet s = wb.createSheet();
|
Sheet s = wb.createSheet();
|
||||||
Row r = s.createRow(0);
|
Row r = s.createRow(0);
|
||||||
@ -274,4 +340,46 @@ public abstract class BaseTestCell extends TestCase {
|
|||||||
assertEquals(true, cell.getBooleanCellValue());
|
assertEquals(true, cell.getBooleanCellValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bug 40296: HSSFCell.setCellFormula throws
|
||||||
|
* ClassCastException if cell is created using HSSFRow.createCell(short column, int type)
|
||||||
|
*/
|
||||||
|
public void test40296() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet workSheet = wb.createSheet("Sheet1");
|
||||||
|
Cell cell;
|
||||||
|
Row row = workSheet.createRow(0);
|
||||||
|
|
||||||
|
cell = row.createCell(0, Cell.CELL_TYPE_NUMERIC);
|
||||||
|
cell.setCellValue(1.0);
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
|
||||||
|
assertEquals(1.0, cell.getNumericCellValue());
|
||||||
|
|
||||||
|
cell = row.createCell(1, Cell.CELL_TYPE_NUMERIC);
|
||||||
|
cell.setCellValue(2.0);
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
|
||||||
|
assertEquals(2.0, cell.getNumericCellValue());
|
||||||
|
|
||||||
|
cell = row.createCell(2, Cell.CELL_TYPE_FORMULA);
|
||||||
|
cell.setCellFormula("SUM(A1:B1)");
|
||||||
|
assertEquals(Cell.CELL_TYPE_FORMULA, cell.getCellType());
|
||||||
|
assertEquals("SUM(A1:B1)", cell.getCellFormula());
|
||||||
|
|
||||||
|
//serialize and check again
|
||||||
|
wb = getTestDataProvider().writeOutAndReadBack(wb);
|
||||||
|
row = wb.getSheetAt(0).getRow(0);
|
||||||
|
cell = row.getCell(0);
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
|
||||||
|
assertEquals(1.0, cell.getNumericCellValue());
|
||||||
|
|
||||||
|
cell = row.getCell(1);
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
|
||||||
|
assertEquals(2.0, cell.getNumericCellValue());
|
||||||
|
|
||||||
|
cell = row.getCell(2);
|
||||||
|
assertEquals(Cell.CELL_TYPE_FORMULA, cell.getCellType());
|
||||||
|
assertEquals("SUM(A1:B1)", cell.getCellFormula());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -23,7 +23,7 @@ import junit.framework.TestCase;
|
|||||||
import org.apache.poi.ss.ITestDataProvider;
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link org.apache.poi.xssf.usermodel.XSSFDataFormat}
|
* Tests of implementation of {@link DataFormat}
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public abstract class BaseTestDataFormat extends TestCase {
|
public abstract class BaseTestDataFormat extends TestCase {
|
||||||
|
173
src/testcases/org/apache/poi/ss/usermodel/BaseTestNamedRange.java
Executable file
173
src/testcases/org/apache/poi/ss/usermodel/BaseTestNamedRange.java
Executable file
@ -0,0 +1,173 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
==================================================================== */
|
||||||
|
|
||||||
|
package org.apache.poi.ss.usermodel;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests of implementation of {@link org.apache.poi.ss.usermodel.Name}
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public abstract class BaseTestNamedRange extends TestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return an object that provides test data in HSSF / XSSF specific way
|
||||||
|
*/
|
||||||
|
protected abstract ITestDataProvider getTestDataProvider();
|
||||||
|
|
||||||
|
public void testCreate(){
|
||||||
|
// Create a new workbook
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet1 = wb.createSheet("Test1");
|
||||||
|
Sheet sheet2 = wb.createSheet("Testing Named Ranges");
|
||||||
|
|
||||||
|
Name name1 = wb.createName();
|
||||||
|
name1.setNameName("testOne");
|
||||||
|
|
||||||
|
//setting a duplicate name should throw IllegalArgumentException
|
||||||
|
Name name2 = wb.createName();
|
||||||
|
try {
|
||||||
|
name2.setNameName("testOne");
|
||||||
|
fail("expected exception");
|
||||||
|
} catch (IllegalArgumentException e){
|
||||||
|
assertEquals("The workbook already contains this name: testOne", e.getMessage());
|
||||||
|
}
|
||||||
|
//the check for duplicates is case-insensitive
|
||||||
|
try {
|
||||||
|
name2.setNameName("TESTone");
|
||||||
|
fail("expected exception");
|
||||||
|
} catch (IllegalArgumentException e){
|
||||||
|
assertEquals("The workbook already contains this name: TESTone", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
name2.setNameName("testTwo");
|
||||||
|
|
||||||
|
String ref1 = "Test1!$A$1:$B$1";
|
||||||
|
name1.setRefersToFormula(ref1);
|
||||||
|
assertEquals(ref1, name1.getRefersToFormula());
|
||||||
|
assertEquals("Test1", name1.getSheetName());
|
||||||
|
|
||||||
|
String ref2 = "'Testing Named Ranges'!$A$1:$B$1";
|
||||||
|
name1.setRefersToFormula(ref2);
|
||||||
|
assertEquals("'Testing Named Ranges'!$A$1:$B$1", name1.getRefersToFormula());
|
||||||
|
assertEquals("Testing Named Ranges", name1.getSheetName());
|
||||||
|
|
||||||
|
assertEquals(-1, name1.getSheetIndex());
|
||||||
|
name1.setSheetIndex(-1);
|
||||||
|
assertEquals(-1, name1.getSheetIndex());
|
||||||
|
try {
|
||||||
|
name1.setSheetIndex(2);
|
||||||
|
fail("should throw IllegalArgumentException");
|
||||||
|
} catch(IllegalArgumentException e){
|
||||||
|
assertEquals("Sheet index (2) is out of range (0..1)", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
name1.setSheetIndex(1);
|
||||||
|
assertEquals(1, name1.getSheetIndex());
|
||||||
|
|
||||||
|
//-1 means the name applies to the entire workbook
|
||||||
|
name1.setSheetIndex(-1);
|
||||||
|
assertEquals(-1, name1.getSheetIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testUnicodeNamedRange() {
|
||||||
|
Workbook workBook = getTestDataProvider().createWorkbook();
|
||||||
|
workBook.createSheet("Test");
|
||||||
|
Name name = workBook.createName();
|
||||||
|
name.setNameName("\u03B1");
|
||||||
|
name.setRefersToFormula("Test!$D$3:$E$8");
|
||||||
|
|
||||||
|
|
||||||
|
Workbook workBook2 = getTestDataProvider().writeOutAndReadBack(workBook);
|
||||||
|
Name name2 = workBook2.getNameAt(0);
|
||||||
|
|
||||||
|
assertEquals("\u03B1", name2.getNameName());
|
||||||
|
assertEquals("Test!$D$3:$E$8", name2.getRefersToFormula());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAddRemove() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
assertEquals(0, wb.getNumberOfNames());
|
||||||
|
Name name1 = wb.createName();
|
||||||
|
name1.setNameName("name1");
|
||||||
|
assertEquals(1, wb.getNumberOfNames());
|
||||||
|
|
||||||
|
Name name2 = wb.createName();
|
||||||
|
name2.setNameName("name2");
|
||||||
|
assertEquals(2, wb.getNumberOfNames());
|
||||||
|
|
||||||
|
Name name3 = wb.createName();
|
||||||
|
name3.setNameName("name3");
|
||||||
|
assertEquals(3, wb.getNumberOfNames());
|
||||||
|
|
||||||
|
wb.removeName("name2");
|
||||||
|
assertEquals(2, wb.getNumberOfNames());
|
||||||
|
|
||||||
|
wb.removeName(0);
|
||||||
|
assertEquals(1, wb.getNumberOfNames());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testScope() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
wb.createSheet();
|
||||||
|
wb.createSheet();
|
||||||
|
|
||||||
|
Name name;
|
||||||
|
|
||||||
|
name = wb.createName();
|
||||||
|
name.setNameName("aaa");
|
||||||
|
name = wb.createName();
|
||||||
|
try {
|
||||||
|
name.setNameName("aaa");
|
||||||
|
fail("Expected exception");
|
||||||
|
} catch(Exception e){
|
||||||
|
assertEquals("The workbook already contains this name: aaa", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
name = wb.createName();
|
||||||
|
name.setSheetIndex(0);
|
||||||
|
name.setNameName("aaa");
|
||||||
|
name = wb.createName();
|
||||||
|
name.setSheetIndex(0);
|
||||||
|
try {
|
||||||
|
name.setNameName("aaa");
|
||||||
|
fail("Expected exception");
|
||||||
|
} catch(Exception e){
|
||||||
|
assertEquals("The sheet already contains this name: aaa", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
name = wb.createName();
|
||||||
|
name.setSheetIndex(1);
|
||||||
|
name.setNameName("aaa");
|
||||||
|
name = wb.createName();
|
||||||
|
name.setSheetIndex(1);
|
||||||
|
try {
|
||||||
|
name.setNameName("aaa");
|
||||||
|
fail("Expected exception");
|
||||||
|
} catch(Exception e){
|
||||||
|
assertEquals("The sheet already contains this name: aaa", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
int cnt = 0;
|
||||||
|
for (int i = 0; i < wb.getNumberOfNames(); i++) {
|
||||||
|
if("aaa".equals(wb.getNameAt(i).getNameName())) cnt++;
|
||||||
|
}
|
||||||
|
assertEquals(3, cnt);
|
||||||
|
}
|
||||||
|
}
|
376
src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java
Executable file
376
src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java
Executable file
@ -0,0 +1,376 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
==================================================================== */
|
||||||
|
|
||||||
|
package org.apache.poi.ss.usermodel;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A base class for testing implementations of
|
||||||
|
* {@link org.apache.poi.ss.usermodel.Row}
|
||||||
|
*/
|
||||||
|
public abstract class BaseTestRow extends TestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return an object that provides test data in / XSSF specific way
|
||||||
|
*/
|
||||||
|
protected abstract ITestDataProvider getTestDataProvider();
|
||||||
|
|
||||||
|
|
||||||
|
public void testLastAndFirstColumns() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
assertEquals(-1, row.getFirstCellNum());
|
||||||
|
assertEquals(-1, row.getLastCellNum());
|
||||||
|
|
||||||
|
row.createCell(2);
|
||||||
|
assertEquals(2, row.getFirstCellNum());
|
||||||
|
assertEquals(3, row.getLastCellNum());
|
||||||
|
|
||||||
|
row.createCell(1);
|
||||||
|
assertEquals(1, row.getFirstCellNum());
|
||||||
|
assertEquals(3, row.getLastCellNum());
|
||||||
|
|
||||||
|
// check the exact case reported in 'bug' 43901 - notice that the cellNum is '0' based
|
||||||
|
row.createCell(3);
|
||||||
|
assertEquals(1, row.getFirstCellNum());
|
||||||
|
assertEquals(4, row.getLastCellNum());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure that there is no cross-talk between rows especially with getFirstCellNum and getLastCellNum
|
||||||
|
* This test was added in response to bug report 44987.
|
||||||
|
*/
|
||||||
|
public void testBoundsInMultipleRows() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
Row rowA = sheet.createRow(0);
|
||||||
|
|
||||||
|
rowA.createCell(10);
|
||||||
|
rowA.createCell(5);
|
||||||
|
assertEquals(5, rowA.getFirstCellNum());
|
||||||
|
assertEquals(11, rowA.getLastCellNum());
|
||||||
|
|
||||||
|
Row rowB = sheet.createRow(1);
|
||||||
|
rowB.createCell(15);
|
||||||
|
rowB.createCell(30);
|
||||||
|
assertEquals(15, rowB.getFirstCellNum());
|
||||||
|
assertEquals(31, rowB.getLastCellNum());
|
||||||
|
|
||||||
|
assertEquals(5, rowA.getFirstCellNum());
|
||||||
|
assertEquals(11, rowA.getLastCellNum());
|
||||||
|
rowA.createCell(50);
|
||||||
|
assertEquals(51, rowA.getLastCellNum());
|
||||||
|
|
||||||
|
assertEquals(31, rowB.getLastCellNum());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRemoveCell() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
|
||||||
|
assertEquals(0, row.getPhysicalNumberOfCells());
|
||||||
|
assertEquals(-1, row.getLastCellNum());
|
||||||
|
assertEquals(-1, row.getFirstCellNum());
|
||||||
|
|
||||||
|
row.createCell(1);
|
||||||
|
assertEquals(2, row.getLastCellNum());
|
||||||
|
assertEquals(1, row.getFirstCellNum());
|
||||||
|
assertEquals(1, row.getPhysicalNumberOfCells());
|
||||||
|
row.createCell(3);
|
||||||
|
assertEquals(4, row.getLastCellNum());
|
||||||
|
assertEquals(1, row.getFirstCellNum());
|
||||||
|
assertEquals(2, row.getPhysicalNumberOfCells());
|
||||||
|
row.removeCell(row.getCell(3));
|
||||||
|
assertEquals(2, row.getLastCellNum());
|
||||||
|
assertEquals(1, row.getFirstCellNum());
|
||||||
|
assertEquals(1, row.getPhysicalNumberOfCells());
|
||||||
|
row.removeCell(row.getCell(1));
|
||||||
|
assertEquals(-1, row.getLastCellNum());
|
||||||
|
assertEquals(-1, row.getFirstCellNum());
|
||||||
|
assertEquals(0, row.getPhysicalNumberOfCells());
|
||||||
|
|
||||||
|
workbook = getTestDataProvider().writeOutAndReadBack(workbook);
|
||||||
|
sheet = workbook.getSheetAt(0);
|
||||||
|
row = sheet.getRow(0);
|
||||||
|
assertEquals(-1, row.getLastCellNum());
|
||||||
|
assertEquals(-1, row.getFirstCellNum());
|
||||||
|
assertEquals(0, row.getPhysicalNumberOfCells());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void baseTestRowBounds(int maxRowNum) {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
//Test low row bound
|
||||||
|
sheet.createRow(0);
|
||||||
|
//Test low row bound exception
|
||||||
|
try {
|
||||||
|
sheet.createRow(-1);
|
||||||
|
fail("expected exception");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// expected during successful test
|
||||||
|
assertTrue(e.getMessage().startsWith("Invalid row number (-1)"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Test high row bound
|
||||||
|
sheet.createRow(maxRowNum);
|
||||||
|
//Test high row bound exception
|
||||||
|
try {
|
||||||
|
sheet.createRow(maxRowNum + 1);
|
||||||
|
fail("expected exception");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// expected during successful test
|
||||||
|
assertEquals("Invalid row number ("+(maxRowNum + 1)+") outside allowable range (0.."+maxRowNum+")", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void baseTestCellBounds(int maxCellNum) {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
//Test low cell bound
|
||||||
|
try {
|
||||||
|
Cell cell = row.createCell(-1);
|
||||||
|
fail("expected exception");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// expected during successful test
|
||||||
|
assertTrue(e.getMessage().startsWith("Invalid column index (-1)"));
|
||||||
|
}
|
||||||
|
|
||||||
|
row.createCell(maxCellNum);
|
||||||
|
|
||||||
|
//Test high cell bound
|
||||||
|
try {
|
||||||
|
Cell cell = row.createCell(maxCellNum + 1);
|
||||||
|
fail("expected exception");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// expected during successful test
|
||||||
|
assertTrue(e.getMessage().startsWith("Invalid column index ("+(maxCellNum+1)+")"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prior to patch 43901, POI was producing files with the wrong last-column
|
||||||
|
* number on the row
|
||||||
|
*/
|
||||||
|
public void testLastCellNumIsCorrectAfterAddCell_bug43901(){
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet("test");
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
|
||||||
|
// New row has last col -1
|
||||||
|
assertEquals(-1, row.getLastCellNum());
|
||||||
|
if(row.getLastCellNum() == 0) {
|
||||||
|
fail("Identified bug 43901");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create two cells, will return one higher
|
||||||
|
// than that for the last number
|
||||||
|
row.createCell(0);
|
||||||
|
assertEquals(1, row.getLastCellNum());
|
||||||
|
row.createCell(255);
|
||||||
|
assertEquals(256, row.getLastCellNum());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for the missing/blank cell policy stuff
|
||||||
|
*/
|
||||||
|
public void testGetCellPolicy() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet("test");
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
|
||||||
|
// 0 -> string
|
||||||
|
// 1 -> num
|
||||||
|
// 2 missing
|
||||||
|
// 3 missing
|
||||||
|
// 4 -> blank
|
||||||
|
// 5 -> num
|
||||||
|
row.createCell(0).setCellValue("test");
|
||||||
|
row.createCell(1).setCellValue(3.2);
|
||||||
|
row.createCell(4, Cell.CELL_TYPE_BLANK);
|
||||||
|
row.createCell(5).setCellValue(4);
|
||||||
|
|
||||||
|
// First up, no policy given, uses default
|
||||||
|
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());
|
||||||
|
assertEquals(null, row.getCell(2));
|
||||||
|
assertEquals(null, row.getCell(3));
|
||||||
|
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType());
|
||||||
|
|
||||||
|
// RETURN_NULL_AND_BLANK - same as default
|
||||||
|
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, Row.RETURN_NULL_AND_BLANK).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, Row.RETURN_NULL_AND_BLANK).getCellType());
|
||||||
|
assertEquals(null, row.getCell(2, Row.RETURN_NULL_AND_BLANK));
|
||||||
|
assertEquals(null, row.getCell(3, Row.RETURN_NULL_AND_BLANK));
|
||||||
|
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4, Row.RETURN_NULL_AND_BLANK).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, Row.RETURN_NULL_AND_BLANK).getCellType());
|
||||||
|
|
||||||
|
// RETURN_BLANK_AS_NULL - nearly the same
|
||||||
|
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, Row.RETURN_BLANK_AS_NULL).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, Row.RETURN_BLANK_AS_NULL).getCellType());
|
||||||
|
assertEquals(null, row.getCell(2, Row.RETURN_BLANK_AS_NULL));
|
||||||
|
assertEquals(null, row.getCell(3, Row.RETURN_BLANK_AS_NULL));
|
||||||
|
assertEquals(null, row.getCell(4, Row.RETURN_BLANK_AS_NULL));
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, Row.RETURN_BLANK_AS_NULL).getCellType());
|
||||||
|
|
||||||
|
// CREATE_NULL_AS_BLANK - creates as needed
|
||||||
|
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, Row.CREATE_NULL_AS_BLANK).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, Row.CREATE_NULL_AS_BLANK).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(2, Row.CREATE_NULL_AS_BLANK).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(3, Row.CREATE_NULL_AS_BLANK).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4, Row.CREATE_NULL_AS_BLANK).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, Row.CREATE_NULL_AS_BLANK).getCellType());
|
||||||
|
|
||||||
|
// Check created ones get the right column
|
||||||
|
assertEquals(0, row.getCell(0, Row.CREATE_NULL_AS_BLANK).getColumnIndex());
|
||||||
|
assertEquals(1, row.getCell(1, Row.CREATE_NULL_AS_BLANK).getColumnIndex());
|
||||||
|
assertEquals(2, row.getCell(2, Row.CREATE_NULL_AS_BLANK).getColumnIndex());
|
||||||
|
assertEquals(3, row.getCell(3, Row.CREATE_NULL_AS_BLANK).getColumnIndex());
|
||||||
|
assertEquals(4, row.getCell(4, Row.CREATE_NULL_AS_BLANK).getColumnIndex());
|
||||||
|
assertEquals(5, row.getCell(5, Row.CREATE_NULL_AS_BLANK).getColumnIndex());
|
||||||
|
|
||||||
|
|
||||||
|
// Now change the cell policy on the workbook, check
|
||||||
|
// that that is now used if no policy given
|
||||||
|
workbook.setMissingCellPolicy(Row.RETURN_BLANK_AS_NULL);
|
||||||
|
|
||||||
|
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0).getCellType());
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());
|
||||||
|
assertEquals(null, row.getCell(2));
|
||||||
|
assertEquals(null, row.getCell(3));
|
||||||
|
assertEquals(null, row.getCell(4));
|
||||||
|
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRowHeight() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
Row row1 = sheet.createRow(0);
|
||||||
|
|
||||||
|
assertEquals(sheet.getDefaultRowHeight(), row1.getHeight());
|
||||||
|
|
||||||
|
sheet.setDefaultRowHeightInPoints(20);
|
||||||
|
row1.setHeight((short)-1); //reset the row height
|
||||||
|
assertEquals(20.0f, row1.getHeightInPoints());
|
||||||
|
assertEquals(20*20, row1.getHeight());
|
||||||
|
|
||||||
|
Row row2 = sheet.createRow(1);
|
||||||
|
row2.setHeight((short)310);
|
||||||
|
assertEquals(310, row2.getHeight());
|
||||||
|
assertEquals((float)310/20, row2.getHeightInPoints());
|
||||||
|
|
||||||
|
Row row3 = sheet.createRow(2);
|
||||||
|
row3.setHeightInPoints(25.5f);
|
||||||
|
assertEquals((short)(25.5f*20), row3.getHeight());
|
||||||
|
assertEquals(25.5f, row3.getHeightInPoints());
|
||||||
|
|
||||||
|
Row row4 = sheet.createRow(3);
|
||||||
|
assertFalse(row4.getZeroHeight());
|
||||||
|
row4.setZeroHeight(true);
|
||||||
|
assertTrue(row4.getZeroHeight());
|
||||||
|
|
||||||
|
workbook = getTestDataProvider().writeOutAndReadBack(workbook);
|
||||||
|
sheet = workbook.getSheetAt(0);
|
||||||
|
|
||||||
|
row1 = sheet.getRow(0);
|
||||||
|
row2 = sheet.getRow(1);
|
||||||
|
row3 = sheet.getRow(2);
|
||||||
|
row4 = sheet.getRow(3);
|
||||||
|
assertEquals(20.0f, row1.getHeightInPoints());
|
||||||
|
assertEquals(20*20, row1.getHeight());
|
||||||
|
|
||||||
|
assertEquals(310, row2.getHeight());
|
||||||
|
assertEquals((float)310/20, row2.getHeightInPoints());
|
||||||
|
|
||||||
|
assertEquals((short)(25.5f*20), row3.getHeight());
|
||||||
|
assertEquals(25.5f, row3.getHeightInPoints());
|
||||||
|
|
||||||
|
assertFalse(row1.getZeroHeight());
|
||||||
|
assertFalse(row2.getZeroHeight());
|
||||||
|
assertFalse(row3.getZeroHeight());
|
||||||
|
assertTrue(row4.getZeroHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test adding cells to a row in various places and see if we can find them again.
|
||||||
|
*/
|
||||||
|
public void testCellIterator() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
|
||||||
|
// One cell at the beginning
|
||||||
|
Cell cell1 = row.createCell(1);
|
||||||
|
Iterator<Cell> it = row.cellIterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell1 == it.next());
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
|
||||||
|
// Add another cell at the end
|
||||||
|
Cell cell2 = row.createCell(99);
|
||||||
|
it = row.cellIterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell1 == it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell2 == it.next());
|
||||||
|
|
||||||
|
// Add another cell at the beginning
|
||||||
|
Cell cell3 = row.createCell(0);
|
||||||
|
it = row.cellIterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell3 == it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell1 == it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell2 == it.next());
|
||||||
|
|
||||||
|
// Replace cell1
|
||||||
|
Cell cell4 = row.createCell(1);
|
||||||
|
it = row.cellIterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell3 == it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell4 == it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell2 == it.next());
|
||||||
|
assertFalse(it.hasNext());
|
||||||
|
|
||||||
|
// Add another cell, specifying the cellType
|
||||||
|
Cell cell5 = row.createCell(2, Cell.CELL_TYPE_STRING);
|
||||||
|
it = row.cellIterator();
|
||||||
|
assertNotNull(cell5);
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell3 == it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell4 == it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell5 == it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertTrue(cell2 == it.next());
|
||||||
|
assertEquals(Cell.CELL_TYPE_STRING, cell5.getCellType());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
565
src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java
Executable file
565
src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java
Executable file
@ -0,0 +1,565 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
==================================================================== */
|
||||||
|
|
||||||
|
package org.apache.poi.ss.usermodel;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Common superclass for testing {@link org.apache.poi.xssf.usermodel.XSSFCell} and
|
||||||
|
* {@link org.apache.poi.hssf.usermodel.HSSFCell}
|
||||||
|
*/
|
||||||
|
public abstract class BaseTestSheet extends TestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return an object that provides test data in HSSF / XSSF specific way
|
||||||
|
*/
|
||||||
|
protected abstract ITestDataProvider getTestDataProvider();
|
||||||
|
|
||||||
|
public void testCreateRow() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
assertEquals(0, sheet.getPhysicalNumberOfRows());
|
||||||
|
|
||||||
|
//Test that we get null for undefined rownumber
|
||||||
|
assertNull(sheet.getRow(1));
|
||||||
|
|
||||||
|
// Test row creation with consecutive indexes
|
||||||
|
Row row1 = sheet.createRow(0);
|
||||||
|
Row row2 = sheet.createRow(1);
|
||||||
|
assertEquals(0, row1.getRowNum());
|
||||||
|
assertEquals(1, row2.getRowNum());
|
||||||
|
Iterator<Row> it = sheet.rowIterator();
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertSame(row1, it.next());
|
||||||
|
assertTrue(it.hasNext());
|
||||||
|
assertSame(row2, it.next());
|
||||||
|
assertEquals(1, sheet.getLastRowNum());
|
||||||
|
|
||||||
|
// Test row creation with non consecutive index
|
||||||
|
Row row101 = sheet.createRow(100);
|
||||||
|
assertNotNull(row101);
|
||||||
|
assertEquals(100, sheet.getLastRowNum());
|
||||||
|
assertEquals(3, sheet.getPhysicalNumberOfRows());
|
||||||
|
|
||||||
|
// Test overwriting an existing row
|
||||||
|
Row row2_ovrewritten = sheet.createRow(1);
|
||||||
|
Cell cell = row2_ovrewritten.createCell(0);
|
||||||
|
cell.setCellValue(100);
|
||||||
|
Iterator<Row> it2 = sheet.rowIterator();
|
||||||
|
assertTrue(it2.hasNext());
|
||||||
|
assertSame(row1, it2.next());
|
||||||
|
assertTrue(it2.hasNext());
|
||||||
|
Row row2_ovrewritten_ref = it2.next();
|
||||||
|
assertSame(row2_ovrewritten, row2_ovrewritten_ref);
|
||||||
|
assertEquals(100.0, row2_ovrewritten_ref.getCell(0).getNumericCellValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testRemoveRow() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet1 = workbook.createSheet();
|
||||||
|
assertEquals(0, sheet1.getPhysicalNumberOfRows());
|
||||||
|
|
||||||
|
Row row0 = sheet1.createRow(0);
|
||||||
|
assertEquals(1, sheet1.getPhysicalNumberOfRows());
|
||||||
|
sheet1.removeRow(row0);
|
||||||
|
assertEquals(0, sheet1.getPhysicalNumberOfRows());
|
||||||
|
|
||||||
|
Row row1 = sheet1.createRow(1);
|
||||||
|
Row row2 = sheet1.createRow(2);
|
||||||
|
assertEquals(2, sheet1.getPhysicalNumberOfRows());
|
||||||
|
|
||||||
|
assertNotNull(sheet1.getRow(1));
|
||||||
|
assertNotNull(sheet1.getRow(2));
|
||||||
|
sheet1.removeRow(row2);
|
||||||
|
assertNotNull(sheet1.getRow(1));
|
||||||
|
assertNull(sheet1.getRow(2));
|
||||||
|
|
||||||
|
Row row3 = sheet1.createRow(3);
|
||||||
|
Sheet sheet2 = workbook.createSheet();
|
||||||
|
try {
|
||||||
|
sheet2.removeRow(row3);
|
||||||
|
fail("Expected exception");
|
||||||
|
} catch (IllegalArgumentException e){
|
||||||
|
assertEquals("Specified row does not belong to this sheet", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCloneSheet() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
CreationHelper factory = workbook.getCreationHelper();
|
||||||
|
Sheet sheet = workbook.createSheet("Test Clone");
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
Cell cell = row.createCell(0);
|
||||||
|
Cell cell2 = row.createCell(1);
|
||||||
|
cell.setCellValue(factory.createRichTextString("clone_test"));
|
||||||
|
cell2.setCellFormula("SIN(1)");
|
||||||
|
|
||||||
|
Sheet clonedSheet = workbook.cloneSheet(0);
|
||||||
|
Row clonedRow = clonedSheet.getRow(0);
|
||||||
|
|
||||||
|
//Check for a good clone
|
||||||
|
assertEquals(clonedRow.getCell(0).getRichStringCellValue().getString(), "clone_test");
|
||||||
|
|
||||||
|
//Check that the cells are not somehow linked
|
||||||
|
cell.setCellValue(factory.createRichTextString("Difference Check"));
|
||||||
|
cell2.setCellFormula("cos(2)");
|
||||||
|
if ("Difference Check".equals(clonedRow.getCell(0).getRichStringCellValue().getString())) {
|
||||||
|
fail("string cell not properly cloned");
|
||||||
|
}
|
||||||
|
if ("COS(2)".equals(clonedRow.getCell(1).getCellFormula())) {
|
||||||
|
fail("formula cell not properly cloned");
|
||||||
|
}
|
||||||
|
assertEquals(clonedRow.getCell(0).getRichStringCellValue().getString(), "clone_test");
|
||||||
|
assertEquals(clonedRow.getCell(1).getCellFormula(), "SIN(1)");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** tests that the sheet name for multiple clones of the same sheet is unique
|
||||||
|
* BUG 37416
|
||||||
|
*/
|
||||||
|
public void testCloneSheetMultipleTimes() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
CreationHelper factory = workbook.getCreationHelper();
|
||||||
|
Sheet sheet = workbook.createSheet("Test Clone");
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
Cell cell = row.createCell(0);
|
||||||
|
cell.setCellValue(factory.createRichTextString("clone_test"));
|
||||||
|
//Clone the sheet multiple times
|
||||||
|
workbook.cloneSheet(0);
|
||||||
|
workbook.cloneSheet(0);
|
||||||
|
|
||||||
|
assertNotNull(workbook.getSheet("Test Clone"));
|
||||||
|
assertNotNull(workbook.getSheet("Test Clone (2)"));
|
||||||
|
assertEquals("Test Clone (3)", workbook.getSheetName(2));
|
||||||
|
assertNotNull(workbook.getSheet("Test Clone (3)"));
|
||||||
|
|
||||||
|
workbook.removeSheetAt(0);
|
||||||
|
workbook.removeSheetAt(0);
|
||||||
|
workbook.removeSheetAt(0);
|
||||||
|
workbook.createSheet("abc ( 123)");
|
||||||
|
workbook.cloneSheet(0);
|
||||||
|
assertEquals("abc (124)", workbook.getSheetName(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setting landscape and portrait stuff on new sheets
|
||||||
|
*/
|
||||||
|
public void testPrintSetupLandscapeNew() throws Exception {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheetL = workbook.createSheet("LandscapeS");
|
||||||
|
Sheet sheetP = workbook.createSheet("LandscapeP");
|
||||||
|
|
||||||
|
// Check two aspects of the print setup
|
||||||
|
assertFalse(sheetL.getPrintSetup().getLandscape());
|
||||||
|
assertFalse(sheetP.getPrintSetup().getLandscape());
|
||||||
|
assertEquals(1, sheetL.getPrintSetup().getCopies());
|
||||||
|
assertEquals(1, sheetP.getPrintSetup().getCopies());
|
||||||
|
|
||||||
|
// Change one on each
|
||||||
|
sheetL.getPrintSetup().setLandscape(true);
|
||||||
|
sheetP.getPrintSetup().setCopies((short)3);
|
||||||
|
|
||||||
|
// Check taken
|
||||||
|
assertTrue(sheetL.getPrintSetup().getLandscape());
|
||||||
|
assertFalse(sheetP.getPrintSetup().getLandscape());
|
||||||
|
assertEquals(1, sheetL.getPrintSetup().getCopies());
|
||||||
|
assertEquals(3, sheetP.getPrintSetup().getCopies());
|
||||||
|
|
||||||
|
// Save and re-load, and check still there
|
||||||
|
workbook = getTestDataProvider().writeOutAndReadBack(workbook);
|
||||||
|
sheetL = workbook.getSheet("LandscapeS");
|
||||||
|
sheetP = workbook.getSheet("LandscapeP");
|
||||||
|
|
||||||
|
assertTrue(sheetL.getPrintSetup().getLandscape());
|
||||||
|
assertFalse(sheetP.getPrintSetup().getLandscape());
|
||||||
|
assertEquals(1, sheetL.getPrintSetup().getCopies());
|
||||||
|
assertEquals(3, sheetP.getPrintSetup().getCopies());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When removing one merged region, it would break
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void testRemoveMerged() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
CellRangeAddress region = new CellRangeAddress(0, 1, 0, 1);
|
||||||
|
sheet.addMergedRegion(region);
|
||||||
|
region = new CellRangeAddress(1, 2, 0, 1);
|
||||||
|
sheet.addMergedRegion(region);
|
||||||
|
|
||||||
|
sheet.removeMergedRegion(0);
|
||||||
|
|
||||||
|
region = sheet.getMergedRegion(0);
|
||||||
|
assertEquals("Left over region should be starting at row 1", 1, region.getFirstRow());
|
||||||
|
|
||||||
|
sheet.removeMergedRegion(0);
|
||||||
|
|
||||||
|
assertEquals("there should be no merged regions left!", 0, sheet.getNumMergedRegions());
|
||||||
|
|
||||||
|
//an, add, remove, get(0) would null pointer
|
||||||
|
sheet.addMergedRegion(region);
|
||||||
|
assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
|
||||||
|
sheet.removeMergedRegion(0);
|
||||||
|
assertEquals("there should now be zero merged regions!", 0, sheet.getNumMergedRegions());
|
||||||
|
//add it again!
|
||||||
|
region.setLastRow(4);
|
||||||
|
|
||||||
|
sheet.addMergedRegion(region);
|
||||||
|
assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
|
||||||
|
|
||||||
|
//should exist now!
|
||||||
|
assertTrue("there isn't more than one merged region in there", 1 <= sheet.getNumMergedRegions());
|
||||||
|
region = sheet.getMergedRegion(0);
|
||||||
|
assertEquals("the merged row to doesnt match the one we put in ", 4, region.getLastRow());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShiftMerged() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
CreationHelper factory = wb.getCreationHelper();
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
Cell cell = row.createCell(0);
|
||||||
|
cell.setCellValue(factory.createRichTextString("first row, first cell"));
|
||||||
|
|
||||||
|
row = sheet.createRow(1);
|
||||||
|
cell = row.createCell(1);
|
||||||
|
cell.setCellValue(factory.createRichTextString("second row, second cell"));
|
||||||
|
|
||||||
|
CellRangeAddress region = new CellRangeAddress(1, 1, 0, 1);
|
||||||
|
sheet.addMergedRegion(region);
|
||||||
|
|
||||||
|
sheet.shiftRows(1, 1, 1);
|
||||||
|
|
||||||
|
region = sheet.getMergedRegion(0);
|
||||||
|
assertEquals("Merged region not moved over to row 2", 2, region.getFirstRow());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the display of gridlines, formulas, and rowcolheadings.
|
||||||
|
* @author Shawn Laubach (slaubach at apache dot org)
|
||||||
|
*/
|
||||||
|
public void testDisplayOptions() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
|
||||||
|
assertEquals(sheet.isDisplayGridlines(), true);
|
||||||
|
assertEquals(sheet.isDisplayRowColHeadings(), true);
|
||||||
|
assertEquals(sheet.isDisplayFormulas(), false);
|
||||||
|
assertEquals(sheet.isDisplayZeros(), true);
|
||||||
|
|
||||||
|
sheet.setDisplayGridlines(false);
|
||||||
|
sheet.setDisplayRowColHeadings(false);
|
||||||
|
sheet.setDisplayFormulas(true);
|
||||||
|
sheet.setDisplayZeros(false);
|
||||||
|
|
||||||
|
wb = getTestDataProvider().writeOutAndReadBack(wb);
|
||||||
|
sheet = wb.getSheetAt(0);
|
||||||
|
|
||||||
|
assertEquals(sheet.isDisplayGridlines(), false);
|
||||||
|
assertEquals(sheet.isDisplayRowColHeadings(), false);
|
||||||
|
assertEquals(sheet.isDisplayFormulas(), true);
|
||||||
|
assertEquals(sheet.isDisplayZeros(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testColumnWidth() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
|
||||||
|
//default column width measured in characters
|
||||||
|
sheet.setDefaultColumnWidth(10);
|
||||||
|
assertEquals(10, sheet.getDefaultColumnWidth());
|
||||||
|
//columns A-C have default width
|
||||||
|
assertEquals(256*10, sheet.getColumnWidth(0));
|
||||||
|
assertEquals(256*10, sheet.getColumnWidth(1));
|
||||||
|
assertEquals(256*10, sheet.getColumnWidth(2));
|
||||||
|
|
||||||
|
//set custom width for D-F
|
||||||
|
for (char i = 'D'; i <= 'F'; i++) {
|
||||||
|
//Sheet#setColumnWidth accepts the width in units of 1/256th of a character width
|
||||||
|
int w = 256*12;
|
||||||
|
sheet.setColumnWidth(i, w);
|
||||||
|
assertEquals(w, sheet.getColumnWidth(i));
|
||||||
|
}
|
||||||
|
//reset the default column width, columns A-C change, D-F still have custom width
|
||||||
|
sheet.setDefaultColumnWidth(20);
|
||||||
|
assertEquals(20, sheet.getDefaultColumnWidth());
|
||||||
|
assertEquals(256*20, sheet.getColumnWidth(0));
|
||||||
|
assertEquals(256*20, sheet.getColumnWidth(1));
|
||||||
|
assertEquals(256*20, sheet.getColumnWidth(2));
|
||||||
|
for (char i = 'D'; i <= 'F'; i++) {
|
||||||
|
int w = 256*12;
|
||||||
|
assertEquals(w, sheet.getColumnWidth(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
// check for 16-bit signed/unsigned error:
|
||||||
|
sheet.setColumnWidth(10, 40000);
|
||||||
|
assertEquals(40000, sheet.getColumnWidth(10));
|
||||||
|
|
||||||
|
//The maximum column width for an individual cell is 255 characters
|
||||||
|
try {
|
||||||
|
sheet.setColumnWidth(9, 256*256);
|
||||||
|
fail("expected exception");
|
||||||
|
} catch(IllegalArgumentException e){
|
||||||
|
assertEquals("The maximum column width for an individual cell is 255 characters.", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
//serialize and read again
|
||||||
|
wb = getTestDataProvider().writeOutAndReadBack(wb);
|
||||||
|
|
||||||
|
sheet = wb.getSheetAt(0);
|
||||||
|
assertEquals(20, sheet.getDefaultColumnWidth());
|
||||||
|
//columns A-C have default width
|
||||||
|
assertEquals(256*20, sheet.getColumnWidth(0));
|
||||||
|
assertEquals(256*20, sheet.getColumnWidth(1));
|
||||||
|
assertEquals(256*20, sheet.getColumnWidth(2));
|
||||||
|
//columns D-F have custom width
|
||||||
|
for (char i = 'D'; i <= 'F'; i++) {
|
||||||
|
short w = (256*12);
|
||||||
|
assertEquals(w, sheet.getColumnWidth(i));
|
||||||
|
}
|
||||||
|
assertEquals(40000, sheet.getColumnWidth(10));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDefaultRowHeight() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
sheet.setDefaultRowHeightInPoints(15);
|
||||||
|
assertEquals((short) 300, sheet.getDefaultRowHeight());
|
||||||
|
assertEquals((float) 15, sheet.getDefaultRowHeightInPoints());
|
||||||
|
|
||||||
|
// Set a new default row height in twips and test getting the value in points
|
||||||
|
sheet.setDefaultRowHeight((short) 360);
|
||||||
|
assertEquals(18.0f, sheet.getDefaultRowHeightInPoints());
|
||||||
|
assertEquals((short) 360, sheet.getDefaultRowHeight());
|
||||||
|
|
||||||
|
// Test that defaultRowHeight is a truncated short: E.G. 360inPoints -> 18; 361inPoints -> 18
|
||||||
|
sheet.setDefaultRowHeight((short) 361);
|
||||||
|
assertEquals((float)361/20, sheet.getDefaultRowHeightInPoints());
|
||||||
|
assertEquals((short) 361, sheet.getDefaultRowHeight());
|
||||||
|
|
||||||
|
// Set a new default row height in points and test getting the value in twips
|
||||||
|
sheet.setDefaultRowHeightInPoints(17.5f);
|
||||||
|
assertEquals(17.5f, sheet.getDefaultRowHeightInPoints());
|
||||||
|
assertEquals((short)(17.5f*20), sheet.getDefaultRowHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** cell with formula becomes null on cloning a sheet*/
|
||||||
|
public void test35084() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet s = wb.createSheet("Sheet1");
|
||||||
|
Row r = s.createRow(0);
|
||||||
|
r.createCell(0).setCellValue(1);
|
||||||
|
r.createCell(1).setCellFormula("A1*2");
|
||||||
|
Sheet s1 = wb.cloneSheet(0);
|
||||||
|
r = s1.getRow(0);
|
||||||
|
assertEquals("double", r.getCell(0).getNumericCellValue(), 1, 0); // sanity check
|
||||||
|
assertNotNull(r.getCell(1));
|
||||||
|
assertEquals("formula", r.getCell(1).getCellFormula(), "A1*2");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** test that new default column styles get applied */
|
||||||
|
public void testDefaultColumnStyle() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
CellStyle style = wb.createCellStyle();
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
sheet.setDefaultColumnStyle(0, style);
|
||||||
|
assertNotNull(sheet.getColumnStyle(0));
|
||||||
|
assertEquals(style.getIndex(), sheet.getColumnStyle(0).getIndex());
|
||||||
|
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
Cell cell = row.createCell(0);
|
||||||
|
CellStyle style2 = cell.getCellStyle();
|
||||||
|
assertNotNull(style2);
|
||||||
|
assertEquals("style should match", style.getIndex(), style2.getIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOutlineProperties() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
|
||||||
|
//TODO defaults are different in HSSF and XSSF
|
||||||
|
//assertTrue(sheet.getRowSumsBelow());
|
||||||
|
//assertTrue(sheet.getRowSumsRight());
|
||||||
|
|
||||||
|
sheet.setRowSumsBelow(false);
|
||||||
|
sheet.setRowSumsRight(false);
|
||||||
|
|
||||||
|
assertFalse(sheet.getRowSumsBelow());
|
||||||
|
assertFalse(sheet.getRowSumsRight());
|
||||||
|
|
||||||
|
sheet.setRowSumsBelow(true);
|
||||||
|
sheet.setRowSumsRight(true);
|
||||||
|
|
||||||
|
assertTrue(sheet.getRowSumsBelow());
|
||||||
|
assertTrue(sheet.getRowSumsRight());
|
||||||
|
|
||||||
|
wb = getTestDataProvider().writeOutAndReadBack(wb);
|
||||||
|
sheet = wb.getSheetAt(0);
|
||||||
|
assertTrue(sheet.getRowSumsBelow());
|
||||||
|
assertTrue(sheet.getRowSumsRight());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test basic display properties
|
||||||
|
*/
|
||||||
|
public void testSheetProperties() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
|
||||||
|
assertFalse(sheet.getHorizontallyCenter());
|
||||||
|
sheet.setHorizontallyCenter(true);
|
||||||
|
assertTrue(sheet.getHorizontallyCenter());
|
||||||
|
sheet.setHorizontallyCenter(false);
|
||||||
|
assertFalse(sheet.getHorizontallyCenter());
|
||||||
|
|
||||||
|
assertFalse(sheet.getVerticallyCenter());
|
||||||
|
sheet.setVerticallyCenter(true);
|
||||||
|
assertTrue(sheet.getVerticallyCenter());
|
||||||
|
sheet.setVerticallyCenter(false);
|
||||||
|
assertFalse(sheet.getVerticallyCenter());
|
||||||
|
|
||||||
|
assertFalse(sheet.isPrintGridlines());
|
||||||
|
sheet.setPrintGridlines(true);
|
||||||
|
assertTrue(sheet.isPrintGridlines());
|
||||||
|
|
||||||
|
assertFalse(sheet.isDisplayFormulas());
|
||||||
|
sheet.setDisplayFormulas(true);
|
||||||
|
assertTrue(sheet.isDisplayFormulas());
|
||||||
|
|
||||||
|
assertTrue(sheet.isDisplayGridlines());
|
||||||
|
sheet.setDisplayGridlines(false);
|
||||||
|
assertFalse(sheet.isDisplayGridlines());
|
||||||
|
|
||||||
|
//TODO: default "guts" is different in HSSF and XSSF
|
||||||
|
//assertTrue(sheet.getDisplayGuts());
|
||||||
|
sheet.setDisplayGuts(false);
|
||||||
|
assertFalse(sheet.getDisplayGuts());
|
||||||
|
|
||||||
|
assertTrue(sheet.isDisplayRowColHeadings());
|
||||||
|
sheet.setDisplayRowColHeadings(false);
|
||||||
|
assertFalse(sheet.isDisplayRowColHeadings());
|
||||||
|
|
||||||
|
//TODO: default "autobreaks" is different in HSSF and XSSF
|
||||||
|
//assertTrue(sheet.getAutobreaks());
|
||||||
|
sheet.setAutobreaks(false);
|
||||||
|
assertFalse(sheet.getAutobreaks());
|
||||||
|
|
||||||
|
assertFalse(sheet.getScenarioProtect());
|
||||||
|
|
||||||
|
//TODO: default "fit-to-page" is different in HSSF and XSSF
|
||||||
|
//assertFalse(sheet.getFitToPage());
|
||||||
|
sheet.setFitToPage(true);
|
||||||
|
assertTrue(sheet.getFitToPage());
|
||||||
|
sheet.setFitToPage(false);
|
||||||
|
assertFalse(sheet.getFitToPage());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void baseTestGetSetMargin(double[] defaultMargins) {
|
||||||
|
double marginLeft = defaultMargins[0];
|
||||||
|
double marginRight = defaultMargins[1];
|
||||||
|
double marginTop = defaultMargins[2];
|
||||||
|
double marginBottom = defaultMargins[3];
|
||||||
|
double marginHeader = defaultMargins[4];
|
||||||
|
double marginFooter = defaultMargins[5];
|
||||||
|
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet("Sheet 1");
|
||||||
|
assertEquals(marginLeft, sheet.getMargin(Sheet.LeftMargin));
|
||||||
|
sheet.setMargin(Sheet.LeftMargin, 10.0);
|
||||||
|
//left margin is custom, all others are default
|
||||||
|
assertEquals(10.0, sheet.getMargin(Sheet.LeftMargin));
|
||||||
|
assertEquals(marginRight, sheet.getMargin(Sheet.RightMargin));
|
||||||
|
assertEquals(marginTop, sheet.getMargin(Sheet.TopMargin));
|
||||||
|
assertEquals(marginBottom, sheet.getMargin(Sheet.BottomMargin));
|
||||||
|
sheet.setMargin(Sheet.RightMargin, 11.0);
|
||||||
|
assertEquals(11.0, sheet.getMargin(Sheet.RightMargin));
|
||||||
|
sheet.setMargin(Sheet.TopMargin, 12.0);
|
||||||
|
assertEquals(12.0, sheet.getMargin(Sheet.TopMargin));
|
||||||
|
sheet.setMargin(Sheet.BottomMargin, 13.0);
|
||||||
|
assertEquals(13.0, sheet.getMargin(Sheet.BottomMargin));
|
||||||
|
|
||||||
|
// incorrect margin constant
|
||||||
|
try {
|
||||||
|
sheet.setMargin((short) 65, 15);
|
||||||
|
fail("Expected exception");
|
||||||
|
} catch (IllegalArgumentException e){
|
||||||
|
assertEquals("Unknown margin constant: 65", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRowBreaks() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
//Sheet#getRowBreaks() returns an empty array if no row breaks are defined
|
||||||
|
assertNotNull(sheet.getRowBreaks());
|
||||||
|
assertEquals(0, sheet.getRowBreaks().length);
|
||||||
|
|
||||||
|
sheet.setRowBreak(1);
|
||||||
|
assertEquals(1, sheet.getRowBreaks().length);
|
||||||
|
sheet.setRowBreak(15);
|
||||||
|
assertEquals(2, sheet.getRowBreaks().length);
|
||||||
|
assertEquals(1, sheet.getRowBreaks()[0]);
|
||||||
|
assertEquals(15, sheet.getRowBreaks()[1]);
|
||||||
|
sheet.setRowBreak(1);
|
||||||
|
assertEquals(2, sheet.getRowBreaks().length);
|
||||||
|
assertTrue(sheet.isRowBroken(1));
|
||||||
|
assertTrue(sheet.isRowBroken(15));
|
||||||
|
|
||||||
|
//now remove the created breaks
|
||||||
|
sheet.removeRowBreak(1);
|
||||||
|
assertEquals(1, sheet.getRowBreaks().length);
|
||||||
|
sheet.removeRowBreak(15);
|
||||||
|
assertEquals(0, sheet.getRowBreaks().length);
|
||||||
|
|
||||||
|
assertFalse(sheet.isRowBroken(1));
|
||||||
|
assertFalse(sheet.isRowBroken(15));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testColumnBreaks() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
assertNotNull(sheet.getColumnBreaks());
|
||||||
|
assertEquals(0, sheet.getColumnBreaks().length);
|
||||||
|
|
||||||
|
assertFalse(sheet.isColumnBroken(0));
|
||||||
|
|
||||||
|
sheet.setColumnBreak(11);
|
||||||
|
assertNotNull(sheet.getColumnBreaks());
|
||||||
|
assertEquals(11, sheet.getColumnBreaks()[0]);
|
||||||
|
sheet.setColumnBreak(12);
|
||||||
|
assertEquals(2, sheet.getColumnBreaks().length);
|
||||||
|
assertTrue(sheet.isColumnBroken(11));
|
||||||
|
assertTrue(sheet.isColumnBroken(12));
|
||||||
|
|
||||||
|
sheet.removeColumnBreak((short) 11);
|
||||||
|
assertEquals(1, sheet.getColumnBreaks().length);
|
||||||
|
sheet.removeColumnBreak((short) 15); //remove non-existing
|
||||||
|
assertEquals(1, sheet.getColumnBreaks().length);
|
||||||
|
sheet.removeColumnBreak((short) 12);
|
||||||
|
assertEquals(0, sheet.getColumnBreaks().length);
|
||||||
|
|
||||||
|
assertFalse(sheet.isColumnBroken(11));
|
||||||
|
assertFalse(sheet.isColumnBroken(12));
|
||||||
|
}
|
||||||
|
}
|
276
src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java
Executable file
276
src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java
Executable file
@ -0,0 +1,276 @@
|
|||||||
|
package org.apache.poi.ss.usermodel;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import junit.framework.AssertionFailedError;
|
||||||
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Yegor Kozlov
|
||||||
|
*/
|
||||||
|
public abstract class BaseTestWorkbook extends TestCase {
|
||||||
|
|
||||||
|
protected abstract ITestDataProvider getTestDataProvider();
|
||||||
|
|
||||||
|
public void testCreateSheet() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
assertEquals(0, wb.getNumberOfSheets());
|
||||||
|
|
||||||
|
//getting a sheet by invalid index or non-existing name
|
||||||
|
assertNull(wb.getSheet("Sheet1"));
|
||||||
|
try {
|
||||||
|
wb.getSheetAt(0);
|
||||||
|
fail("should have thrown exceptiuon due to invalid sheet index");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// expected during successful test
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sheet sheet0 = wb.createSheet();
|
||||||
|
Sheet sheet1 = wb.createSheet();
|
||||||
|
assertEquals("Sheet0", sheet0.getSheetName());
|
||||||
|
assertEquals("Sheet1", sheet1.getSheetName());
|
||||||
|
assertEquals(2, wb.getNumberOfSheets());
|
||||||
|
|
||||||
|
//fetching sheets by name is case-insensitive
|
||||||
|
Sheet originalSheet = wb.createSheet("Sheet3");
|
||||||
|
Sheet fetchedSheet = wb.getSheet("sheet3");
|
||||||
|
if (fetchedSheet == null) {
|
||||||
|
throw new AssertionFailedError("Identified bug 44892");
|
||||||
|
}
|
||||||
|
assertEquals("Sheet3", fetchedSheet.getSheetName());
|
||||||
|
assertEquals(3, wb.getNumberOfSheets());
|
||||||
|
assertSame(originalSheet, fetchedSheet);
|
||||||
|
try {
|
||||||
|
wb.createSheet("sHeeT3");
|
||||||
|
fail("should have thrown exceptiuon due to duplicate sheet name");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// expected during successful test
|
||||||
|
assertEquals("The workbook already contains a sheet of this name", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
//names cannot be blank or contain any of /\*?[]
|
||||||
|
String[] invalidNames = {"", "Sheet/", "Sheet\\",
|
||||||
|
"Sheet?", "Sheet*", "Sheet[", "Sheet]"};
|
||||||
|
for (String sheetName : invalidNames) {
|
||||||
|
try {
|
||||||
|
wb.createSheet(sheetName);
|
||||||
|
fail("should have thrown exceptiuon due to invalid sheet name: " + sheetName);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// expected during successful test
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//still have 3 sheets
|
||||||
|
assertEquals(3, wb.getNumberOfSheets());
|
||||||
|
|
||||||
|
//change the name of the 3rd sheet
|
||||||
|
wb.setSheetName(2, "I changed!");
|
||||||
|
|
||||||
|
//try to assign an invalid name to the 2nd sheet
|
||||||
|
try {
|
||||||
|
wb.setSheetName(1, "[I'm invalid]");
|
||||||
|
fail("should have thrown exceptiuon due to invalid sheet name");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
; // expected during successful test
|
||||||
|
}
|
||||||
|
|
||||||
|
//check
|
||||||
|
assertEquals(0, wb.getSheetIndex("sheet0"));
|
||||||
|
assertEquals(1, wb.getSheetIndex("sheet1"));
|
||||||
|
assertEquals(2, wb.getSheetIndex("I changed!"));
|
||||||
|
|
||||||
|
assertSame(sheet0, wb.getSheet("sheet0"));
|
||||||
|
assertSame(sheet1, wb.getSheet("sheet1"));
|
||||||
|
assertSame(originalSheet, wb.getSheet("I changed!"));
|
||||||
|
assertNull(wb.getSheet("unknown"));
|
||||||
|
|
||||||
|
//serialize and read again
|
||||||
|
wb = getTestDataProvider().writeOutAndReadBack(wb);
|
||||||
|
assertEquals(3, wb.getNumberOfSheets());
|
||||||
|
assertEquals(0, wb.getSheetIndex("sheet0"));
|
||||||
|
assertEquals(1, wb.getSheetIndex("sheet1"));
|
||||||
|
assertEquals(2, wb.getSheetIndex("I changed!"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRemoveSheetAt() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
workbook.createSheet("sheet1");
|
||||||
|
workbook.createSheet("sheet2");
|
||||||
|
workbook.createSheet("sheet3");
|
||||||
|
assertEquals(3, workbook.getNumberOfSheets());
|
||||||
|
workbook.removeSheetAt(1);
|
||||||
|
assertEquals(2, workbook.getNumberOfSheets());
|
||||||
|
assertEquals("sheet3", workbook.getSheetName(1));
|
||||||
|
workbook.removeSheetAt(0);
|
||||||
|
assertEquals(1, workbook.getNumberOfSheets());
|
||||||
|
assertEquals("sheet3", workbook.getSheetName(0));
|
||||||
|
workbook.removeSheetAt(0);
|
||||||
|
assertEquals(0, workbook.getNumberOfSheets());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDefaultValues() {
|
||||||
|
Workbook b = getTestDataProvider().createWorkbook();
|
||||||
|
assertEquals(0, b.getActiveSheetIndex());
|
||||||
|
assertEquals(0, b.getFirstVisibleTab());
|
||||||
|
assertEquals(0, b.getNumberOfNames());
|
||||||
|
assertEquals(0, b.getNumberOfSheets());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testSheetSelection() {
|
||||||
|
Workbook b = getTestDataProvider().createWorkbook();
|
||||||
|
b.createSheet("Sheet One");
|
||||||
|
b.createSheet("Sheet Two");
|
||||||
|
b.setActiveSheet(1);
|
||||||
|
b.setSelectedTab(1);
|
||||||
|
b.setFirstVisibleTab(1);
|
||||||
|
assertEquals(1, b.getActiveSheetIndex());
|
||||||
|
assertEquals(1, b.getFirstVisibleTab());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testPrintArea() {
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet1 = workbook.createSheet("Test Print Area");
|
||||||
|
String sheetName1 = sheet1.getSheetName();
|
||||||
|
|
||||||
|
// workbook.setPrintArea(0, reference);
|
||||||
|
workbook.setPrintArea(0, 1, 5, 4, 9);
|
||||||
|
String retrievedPrintArea = workbook.getPrintArea(0);
|
||||||
|
assertEquals("'" + sheetName1 + "'!$B$5:$F$10", retrievedPrintArea);
|
||||||
|
|
||||||
|
String reference = "$A$1:$B$1";
|
||||||
|
workbook.setPrintArea(0, reference);
|
||||||
|
retrievedPrintArea = workbook.getPrintArea(0);
|
||||||
|
assertEquals("'" + sheetName1 + "'!" + reference, retrievedPrintArea);
|
||||||
|
|
||||||
|
workbook.removePrintArea(0);
|
||||||
|
assertNull(workbook.getPrintArea(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetSetActiveSheet(){
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
assertEquals(0, workbook.getActiveSheetIndex());
|
||||||
|
|
||||||
|
workbook.createSheet("sheet1");
|
||||||
|
workbook.createSheet("sheet2");
|
||||||
|
workbook.createSheet("sheet3");
|
||||||
|
// set second sheet
|
||||||
|
workbook.setActiveSheet(1);
|
||||||
|
// test if second sheet is set up
|
||||||
|
assertEquals(1, workbook.getActiveSheetIndex());
|
||||||
|
|
||||||
|
workbook.setActiveSheet(0);
|
||||||
|
// test if second sheet is set up
|
||||||
|
assertEquals(0, workbook.getActiveSheetIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSetSheetOrder() {
|
||||||
|
Workbook wb = getTestDataProvider().createWorkbook();
|
||||||
|
|
||||||
|
for (int i=0; i < 10; i++) {
|
||||||
|
Sheet sh = wb.createSheet("Sheet " + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the initial order
|
||||||
|
assertEquals(0, wb.getSheetIndex("Sheet 0"));
|
||||||
|
assertEquals(1, wb.getSheetIndex("Sheet 1"));
|
||||||
|
assertEquals(2, wb.getSheetIndex("Sheet 2"));
|
||||||
|
assertEquals(3, wb.getSheetIndex("Sheet 3"));
|
||||||
|
assertEquals(4, wb.getSheetIndex("Sheet 4"));
|
||||||
|
assertEquals(5, wb.getSheetIndex("Sheet 5"));
|
||||||
|
assertEquals(6, wb.getSheetIndex("Sheet 6"));
|
||||||
|
assertEquals(7, wb.getSheetIndex("Sheet 7"));
|
||||||
|
assertEquals(8, wb.getSheetIndex("Sheet 8"));
|
||||||
|
assertEquals(9, wb.getSheetIndex("Sheet 9"));
|
||||||
|
|
||||||
|
// Change
|
||||||
|
wb.setSheetOrder("Sheet 6", 0);
|
||||||
|
wb.setSheetOrder("Sheet 3", 7);
|
||||||
|
wb.setSheetOrder("Sheet 1", 9);
|
||||||
|
|
||||||
|
// Check they're currently right
|
||||||
|
assertEquals(0, wb.getSheetIndex("Sheet 6"));
|
||||||
|
assertEquals(1, wb.getSheetIndex("Sheet 0"));
|
||||||
|
assertEquals(2, wb.getSheetIndex("Sheet 2"));
|
||||||
|
assertEquals(3, wb.getSheetIndex("Sheet 4"));
|
||||||
|
assertEquals(4, wb.getSheetIndex("Sheet 5"));
|
||||||
|
assertEquals(5, wb.getSheetIndex("Sheet 7"));
|
||||||
|
assertEquals(6, wb.getSheetIndex("Sheet 3"));
|
||||||
|
assertEquals(7, wb.getSheetIndex("Sheet 8"));
|
||||||
|
assertEquals(8, wb.getSheetIndex("Sheet 9"));
|
||||||
|
assertEquals(9, wb.getSheetIndex("Sheet 1"));
|
||||||
|
|
||||||
|
Workbook wbr = getTestDataProvider().writeOutAndReadBack(wb);
|
||||||
|
|
||||||
|
assertEquals(0, wbr.getSheetIndex("Sheet 6"));
|
||||||
|
assertEquals(1, wbr.getSheetIndex("Sheet 0"));
|
||||||
|
assertEquals(2, wbr.getSheetIndex("Sheet 2"));
|
||||||
|
assertEquals(3, wbr.getSheetIndex("Sheet 4"));
|
||||||
|
assertEquals(4, wbr.getSheetIndex("Sheet 5"));
|
||||||
|
assertEquals(5, wbr.getSheetIndex("Sheet 7"));
|
||||||
|
assertEquals(6, wbr.getSheetIndex("Sheet 3"));
|
||||||
|
assertEquals(7, wbr.getSheetIndex("Sheet 8"));
|
||||||
|
assertEquals(8, wbr.getSheetIndex("Sheet 9"));
|
||||||
|
assertEquals(9, wbr.getSheetIndex("Sheet 1"));
|
||||||
|
|
||||||
|
// Now get the index by the sheet, not the name
|
||||||
|
for(int i=0; i<10; i++) {
|
||||||
|
Sheet s = wbr.getSheetAt(i);
|
||||||
|
assertEquals(i, wbr.getSheetIndex(s));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCloneSheet() {
|
||||||
|
Workbook book = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = book.createSheet("TEST");
|
||||||
|
sheet.createRow(0).createCell(0).setCellValue("Test");
|
||||||
|
sheet.createRow(1).createCell(0).setCellValue(36.6);
|
||||||
|
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2));
|
||||||
|
sheet.addMergedRegion(new CellRangeAddress(1, 2, 0, 2));
|
||||||
|
assertTrue(sheet.isSelected());
|
||||||
|
|
||||||
|
Sheet clonedSheet = book.cloneSheet(0);
|
||||||
|
assertEquals("TEST (2)", clonedSheet.getSheetName());
|
||||||
|
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
|
||||||
|
assertEquals(2, clonedSheet.getNumMergedRegions());
|
||||||
|
assertFalse(clonedSheet.isSelected());
|
||||||
|
|
||||||
|
//cloned sheet is a deep copy, adding rows in the original does not affect the clone
|
||||||
|
sheet.createRow(2).createCell(0).setCellValue(1);
|
||||||
|
sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 2));
|
||||||
|
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
|
||||||
|
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
|
||||||
|
|
||||||
|
clonedSheet.createRow(2).createCell(0).setCellValue(1);
|
||||||
|
clonedSheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 2));
|
||||||
|
assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
|
||||||
|
assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testParentReferences(){
|
||||||
|
Workbook workbook = getTestDataProvider().createWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet();
|
||||||
|
assertSame(workbook, sheet.getWorkbook());
|
||||||
|
|
||||||
|
Row row = sheet.createRow(0);
|
||||||
|
assertSame(sheet, row.getSheet());
|
||||||
|
|
||||||
|
Cell cell = row.createCell(1);
|
||||||
|
assertSame(sheet, cell.getSheet());
|
||||||
|
assertSame(row, cell.getRow());
|
||||||
|
|
||||||
|
workbook = getTestDataProvider().writeOutAndReadBack(workbook);
|
||||||
|
sheet = workbook.getSheetAt(0);
|
||||||
|
assertSame(workbook, sheet.getWorkbook());
|
||||||
|
|
||||||
|
row = sheet.getRow(0);
|
||||||
|
assertSame(sheet, row.getSheet());
|
||||||
|
|
||||||
|
cell = row.getCell(1);
|
||||||
|
assertSame(sheet, cell.getSheet());
|
||||||
|
assertSame(row, cell.getRow());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user