<menu label="Get Involved">
<menu-item label="Contributing" href="contrib.html"/>
+ <menu-item label="Branching" href="branching.html"/>
<menu-item label="Bug Database" href="http://nagoya.apache.org/bugzilla/buglist.cgi?product=POI"/>
<menu-item label="CVS" href="http://jakarta.apache.org/site/cvsindex.html"/>
<menu-item label="Mail Lists" href="http://jakarta.apache.org/site/mail.html"/>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "./dtd/document-v11.dtd">
+
+<document>
+
+ <header>
+ <title>Branching</title>
+ <authors>
+ <person id="GJS" name="Glen Stampoultzis" email="glens@apache.org"/>
+ </authors>
+ </header>
+
+ <body>
+ <section title="Branching Conventions">
+ <p>
+ Branches are tagged in the following way:
+ </p>
+ <ul>
+ <li>REL_1_5_BRANCH</li>
+ <li>REL_2_0_BRANCH</li>
+ </ul>
+ <p>
+ Merge points should be tagged as follows:
+ </p>
+ <ul>
+ <li>REL_1_5_BRANCH_MERGE1</li>
+ <li>REL_1_5_BRANCH_MERGE2</li>
+ <li>etc...</li>
+ </ul>
+ <p>
+ Releases should be tagged as:
+ </p>
+ <ul>
+ <li>REL_1_5</li>
+ <li>REL_1_5_1</li>
+ <li>REL_1_5_2</li>
+ <li>etc...</li>
+ </ul>
+
+ </section>
+ <section title="Branching Advise">
+ <p>
+ Don't forget which branch you are currently on. This is critically
+ important. Committing stuff to the wrong branch causes all sorts of
+ headaches. Best to name your checkout after the branch you are on.
+ </p>
+ </section>
+ <section title="Who Manages Branching?">
+ <p>
+ All branching is currently managed by Glen Stampoultzis. If you wish
+ to create your own branch please let him know. Merging is also
+ handled by Glen. Just pop him a mail if you feel it's necessary to
+ create a branch or perform a merge.
+ </p>
+ <p>
+ The reason to go through a single point for branching is that it can be
+ an easy thing to get wrong. Having a single person managing branches
+ means there is less chance of getting getting our wires crossed with this
+ difficult area of CVS.
+ </p>
+ </section>
+ <section title="Currently Active Branches">
+ <p>
+ The following branches are currently active:
+ </p>
+ <table>
+ <tr>
+ <th>
+ <b>Branch</b>
+ </th>
+ <th>
+ <b>Description</b>
+ </th>
+ </tr>
+ <tr>
+ <td>
+ HEAD
+ </td>
+ <td>
+ This is the trunk and is always active. Currently it is being used to continue development
+ of the 2.0 release.
+ </td>
+ </tr>
+ <tr>
+ <td>
+ REL_1_5_BRANCH
+ </td>
+ <td>
+ All bug fixes not specifically relevant to the 2.0 work should be placed in this branch.
+ From here they will merged back to the trunk and the merge point marked.
+ </td>
+ </tr>
+ </table>
+ </section>
+ </body>
+
+</document>
\ No newline at end of file
<document>
<header>
- <title></title>
+ <title>Project History</title>
<authors>
<person id="AO" name="Andrew C. Oliver" email="acoliver@apache.org"/>
</authors>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
<document>
- <header>
- <title></title>
- <authors>
- <person id="AO" name="Andrew C. Oliver" email="acoliver@apache.org"/>
- </authors>
- </header>
-
- <body>
- <section title="POI logos">
- <p>
- Here are the current logo submissions. Thanks to the artists!
- </p>
- <section title="Michael Mosmann">
- <p>
- <img src="images/logoMichaelMosmann.png"/>
+ <header>
+ <title></title>
+ <authors>
+ <person id="AO" name="Andrew C. Oliver" email="acoliver@apache.org"/>
+ <person id="GS" name="Glen Stampoultzis" email="glens@apache.org"/>
+ </authors>
+ </header>
+
+ <body>
+ <section title="POI logos">
+ <p>
+ Here are the current logo submissions. Thanks to the artists!
+ </p>
+ <section title="Michael Mosmann">
+ <p>
+ <img src="images/logoMichaelMosmann.png"/>
</p>
- </section>
- <section title="Loïc Lefèvre">
+ </section>
+ <section title="Loïc Lefèvre">
<p>
- <img src="images/logoLoicLefevre.png"/>
- <img src="images/logoLoicLefevre2.png"/>
+ <img src="images/logoLoicLefevre.png"/>
+ <img src="images/logoLoicLefevre2.png"/>
</p>
- </section>
- <section title="Glen Stampoultzis">
+ </section>
+ <section title="Glen Stampoultzis">
<p>
- <img src="images/logoGlenStampoutlzis.png"/>
+ <img src="images/logoGlenStampoutlzis.png"/>
</p>
- </section>
- <section title="Marcus Gustafsson">
+ </section>
+ <section title="Marcus Gustafsson">
<p>
- <img src="images/logoGustafsson1.png"/>
- <img src="images/logoGustafsson2.png"/>
+ <img src="images/logoGustafsson1.png"/>
+ <img src="images/logoGustafsson2.png"/>
</p>
- </section>
- <section title="Adrianus Handoyo">
+ </section>
+ <section title="Adrianus Handoyo">
<p>
- <img src="images/logoAdria1.png"/>
- <img src="images/logoAdria2.png"/>
- <img src="images/logoAdria3.png"/>
+ <img src="images/logoAdria1.png"/>
+ <img src="images/logoAdria2.png"/>
+ <img src="images/logoAdria3.png"/>
</p>
- </section>
- <section title="RussellBeattie">
+ </section>
+ <section title="RussellBeattie">
<p>
- <img src="images/logoRussellBeattie1.png"/>
- <img src="images/logoRussellBeattie2.png"/>
- <img src="images/logoRussellBeattie3.png"/>
+ <img src="images/logoRussellBeattie1.png"/>
+ <img src="images/logoRussellBeattie2.png"/>
+ <img src="images/logoRussellBeattie3.png"/>
</p>
<p>
- <img src="images/logoRussellBeattie4.png"/>
- <img src="images/logoRussellBeattie5.png"/>
+ <img src="images/logoRussellBeattie4.png"/>
+ <img src="images/logoRussellBeattie5.png"/>
</p>
- </section>
- <section title="Daniel Fernandez">
+ </section>
+ <section title="Daniel Fernandez">
<p>
- <img src="images/logoDanielFernandez.png"/>
+ <img src="images/logoDanielFernandez.png"/>
</p>
- </section>
- <section title="Andrew Clements">
+ </section>
+ <section title="Andrew Clements">
<p>
- <img src="images/logoAndrewClements.png"/>
- <img src="images/logoAndrewClements2.png"/>
+ <img src="images/logoAndrewClements.png"/>
+ <img src="images/logoAndrewClements2.png"/>
</p>
- </section>
- <section title="Wendy Wise">
+ </section>
+ <section title="Wendy Wise">
<p>
- <img src="images/logoWendyWise.png"/>
- <img src="images/logoWendyWise2.png"/>
+ <img src="images/logoWendyWise.png"/>
+ <img src="images/logoWendyWise2.png"/>
</p>
- </section>
- <section title="Nikhil Karmokar">
+ </section>
+ <section title="Nikhil Karmokar">
<p>
- <img src="images/logoKarmokar1.png"/>
- <img src="images/logoKarmokar1s.png"/>
+ <img src="images/logoKarmokar1.png"/>
+ <img src="images/logoKarmokar1s.png"/>
</p>
<p>
- <img src="images/logoKarmokar2.png"/>
- <img src="images/logoKarmokar2s.png"/>
+ <img src="images/logoKarmokar2.png"/>
+ <img src="images/logoKarmokar2s.png"/>
</p>
<p>
- <img src="images/logoKarmokar3.png"/>
- <img src="images/logoKarmokar3s.png"/>
+ <img src="images/logoKarmokar3.png"/>
+ <img src="images/logoKarmokar3s.png"/>
</p>
<p>
- <img src="images/logoKarmokar4.png"/>
- <img src="images/logoKarmokar4s.png"/>
+ <img src="images/logoKarmokar4.png"/>
+ <img src="images/logoKarmokar4s.png"/>
</p>
<p>
- <img src="images/logoKarmokar5.png"/>
- <img src="images/logoKarmokar5s.png"/>
+ <img src="images/logoKarmokar5.png"/>
+ <img src="images/logoKarmokar5s.png"/>
</p>
<p>
- <img src="images/logoKarmokar6.png"/>
- <img src="images/logoKarmokar6s.png"/>
+ <img src="images/logoKarmokar6.png"/>
+ <img src="images/logoKarmokar6s.png"/>
</p>
- </section>
- <section title="Lieven Janssen">
+ </section>
+ <section title="Lieven Janssen">
+ <p>
+ <img src="images/logoJanssen1.png"/>
+ <img src="images/logoJanssen2.png"/>
+ </p>
+ </section>
+ <section title="RaPi GmbH">
<p>
- <img src="images/logoJanssen1.png"/>
- <img src="images/logoJanssen2.png"/>
+ Contact Person: Fancy at: fancy at my-feiqi.com
</p>
+ <p>
+ <img src="images/logoRaPiGmbH1.png"/>
+ <img src="images/logoRaPiGmbH2.png"/>
+ </p>
+ <p>
+ <img src="images/logoRaPiGmbH3.png"/>
+ </p>
+ <p>
+ <img src="images/logoRaPiGmbH4.png"/>
+ </p>
+ <p>
+ <img src="images/logoRaPiGmbH5.png"/>
+ </p>
+ <p>
+ <img src="images/logoRaPiGmbH6.png"/>
+ </p>
+ <p>
+ <img src="images/logoRaPiGmbH7.png"/>
+ </p>
+ </section>
+
</section>
-
- </section>
- </body>
- <footer>
- <legal>
- Copyright (c) @year@ The Apache Software Foundation All rights reserved.
- $Revision$ $Date$
- </legal>
- </footer>
+ </body>
+ <footer>
+ <legal>
+ Copyright (c) @year@ The Apache Software Foundation All rights reserved.
+ $Revision$ $Date$
+ </legal>
+ </footer>
</document>
retval = new LinkedDataRecord(rectype, size, data);
break;
- case FormulaRecord.sid:
- retval = new FormulaRecord(rectype, size, data);
- break;
+// case FormulaRecord.sid:
+// retval = new FormulaRecord(rectype, size, data);
+// break;
case SheetPropertiesRecord.sid:
- retval = new FormulaRecord(rectype, size, data);
+ retval = new SheetPropertiesRecord(rectype, size, data);
break;
LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset, ( short ) 16);
LittleEndian.putShort(data, 4 + offset, getRowNumber());
- LittleEndian.putShort(data, 6 + offset, getFirstCol());
- LittleEndian.putShort(data, 8 + offset, getLastCol());
+ LittleEndian.putShort(data, 6 + offset, getFirstCol() == -1 ? (short)0 : getFirstCol());
+ LittleEndian.putShort(data, 8 + offset, getLastCol() == -1 ? (short)0 : getLastCol());
LittleEndian.putShort(data, 10 + offset, getHeight());
LittleEndian.putShort(data, 12 + offset, getOptimize());
LittleEndian.putShort(data, 14 + offset, field_6_reserved);
this.sheet = sheet;
row = new RowRecord();
row.setHeight((short) 0xff);
- row.setLastCol((short)-1);
- row.setFirstCol((short)-1);
+ row.setLastCol((short) -1);
+ row.setFirstCol((short) -1);
// row.setRowNumber(rowNum);
setRowNum(rowNum);
if (cell.getCellNum() == row.getLastCol())
{
- row.setLastCol( findLastCell(row.getLastCol()) );
+ row.setLastCol(findLastCell(row.getLastCol()));
}
if (cell.getCellNum() == row.getFirstCol())
{
- row.setFirstCol( findFirstCell(row.getFirstCol()) );
+ row.setFirstCol(findFirstCell(row.getFirstCol()));
}
}
{
if (row.getFirstCol() == -1)
{
- row.setFirstCol( cell.getCellNum() );
+ row.setFirstCol(cell.getCellNum());
}
if (row.getLastCol() == -1)
{
- row.setLastCol( cell.getCellNum() );
+ row.setLastCol(cell.getCellNum());
}
cells.put(new Integer(cell.getCellNum()), cell);
* get the hssfcell representing a given column (logical cell) 0-based. If you
* ask for a cell that is not defined....you get a null.
*
- * @param cellnum - 0 based column number
- * @returns HSSFCell representing that column or null if undefined.
+ * @param cellnum 0 based column number
+ * @return HSSFCell representing that column or null if undefined.
*/
public HSSFCell getCell(short cellnum)
public short getFirstCellNum()
{
- return row.getFirstCol();
+ if (getPhysicalNumberOfCells() == 0)
+ return -1;
+ else
+ return row.getFirstCol();
}
/**
public short getLastCellNum()
{
- return row.getLastCol();
+ if (getPhysicalNumberOfCells() == 0)
+ return -1;
+ else
+ return row.getLastCol();
}
}
/**
- * @returns cell iterator of the physically defined cells. Note element 4 may
+ * @return cell iterator of the physically defined cells. Note element 4 may
* actually be row cell depending on how many are defined!
*/
-
/* ====================================================================
* The Apache Software License, Version 1.1
*
*/
package org.apache.poi.hssf.usermodel;
-import org.apache.poi.util.POILogFactory;
import org.apache.poi.hssf.model.Sheet;
import org.apache.poi.hssf.model.Workbook;
-import org.apache.poi.hssf.record.*;
+import org.apache.poi.hssf.record.CellValueRecordInterface;
+import org.apache.poi.hssf.record.RowRecord;
+import org.apache.poi.hssf.record.VCenterRecord;
+import org.apache.poi.hssf.record.WSBoolRecord;
import org.apache.poi.hssf.util.Region;
+import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
import java.util.Iterator;
* High level representation of a worksheet.
* @author Andrew C. Oliver (acoliver at apache dot org)
* @author Glen Stampoultzis (glens at apache.org)
- * @version 1.0-pre
+ * @author Libin Roman (romal at vistaportal.com)
*/
public class HSSFSheet
{
- private static final int DEBUG = POILogger.DEBUG;
+ private static final int DEBUG = POILogger.DEBUG;
/**
* Used for compile-time optimization. This is the initial size for the collection of
* by setting this to a higher number and recompiling a custom edition of HSSFSheet.
*/
- public final static int INITIAL_CAPACITY = 20;
+ public final static int INITIAL_CAPACITY = 20;
/**
* reference to the low level Sheet object
*/
- private Sheet sheet;
- private TreeMap rows;
- private Workbook book;
- private int firstrow;
- private int lastrow;
+ private Sheet sheet;
+ private TreeMap rows;
+ private Workbook book;
+ private int firstrow;
+ private int lastrow;
private static POILogger log = POILogFactory.getLogger(HSSFSheet.class);
/**
protected HSSFSheet(Workbook book)
{
- sheet = Sheet.createSheet();
- rows = new TreeMap(); // new ArrayList(INITIAL_CAPACITY);
+ sheet = Sheet.createSheet();
+ rows = new TreeMap(); // new ArrayList(INITIAL_CAPACITY);
this.book = book;
}
protected HSSFSheet(Workbook book, Sheet sheet)
{
this.sheet = sheet;
- rows = new TreeMap();
- this.book = book;
+ rows = new TreeMap();
+ this.book = book;
setPropertiesFromSheet(sheet);
}
- /** private default constructor prevents bogus initializationless construction */
-
- private HSSFSheet()
- {
- }
/**
* used internally to set the properties given a Sheet object
private void setPropertiesFromSheet(Sheet sheet)
{
- int sloc = sheet.getLoc();
- RowRecord row = sheet.getNextRow();
+ int sloc = sheet.getLoc();
+ RowRecord row = sheet.getNextRow();
while (row != null)
{
row = sheet.getNextRow();
}
sheet.setLoc(sloc);
- CellValueRecordInterface cval = sheet.getNextValueRecord();
- long timestart = System.currentTimeMillis();
+ CellValueRecordInterface cval = sheet.getNextValueRecord();
+ long timestart = System.currentTimeMillis();
log.log(DEBUG, "Time at start of cell creating in HSSF sheet = ",
new Long(timestart));
while (cval != null)
{
- long cellstart = System.currentTimeMillis();
- HSSFRow hrow = lastrow;
+ long cellstart = System.currentTimeMillis();
+ HSSFRow hrow = lastrow;
if ((lastrow == null) || (lastrow.getRowNum() != cval.getRow()))
{
while (iter.hasNext())
{
- HSSFCell cell = ( HSSFCell ) iter.next();
+ HSSFCell cell = (HSSFCell) iter.next();
sheet.removeValueRecord(row.getRowNum(),
- cell.getCellValueRecord());
+ cell.getCellValueRecord());
}
sheet.removeRow(row.getRowRecord());
}
private int findLastRow(int lastrow)
{
- int rownum = lastrow - 1;
- HSSFRow r = getRow(rownum);
+ int rownum = lastrow - 1;
+ HSSFRow r = getRow(rownum);
- while (r == null)
+ while (r == null && rownum >= 0)
{
r = getRow(--rownum);
}
private int findFirstRow(int firstrow)
{
- int rownum = firstrow + 1;
- HSSFRow r = getRow(rownum);
+ int rownum = firstrow + 1;
+ HSSFRow r = getRow(rownum);
- while (r == null)
+ while (r == null && rownum <= getLastRowNum())
{
r = getRow(++rownum);
}
+
+ if (rownum > getLastRowNum())
+ return -1;
+
return rownum;
}
{
HSSFRow row = new HSSFRow();
- row.setRowNum(( short ) rownum);
- return ( HSSFRow ) rows.get(row);
+ row.setRowNum((short) rownum);
+ return (HSSFRow) rows.get(row);
}
/**
return lastrow;
}
- /**
- * Seems to be unused (gjs)
- *
- * used internally to add cells from a high level row to the low level model
- * @param row the row object to represent in low level RowRecord.
- */
- private void addCellsFromRow(HSSFRow row)
- {
- Iterator iter = row.cellIterator();
-
- // for (int k = 0; k < row.getPhysicalNumberOfCells(); k++)
- while (iter.hasNext())
- {
- HSSFCell cell =
- ( HSSFCell ) iter.next(); // row.getPhysicalCellAt(k);
-
- sheet.addValueRecord(row.getRowNum(), cell.getCellValueRecord());
- }
- }
-
/**
* set the width (in units of 1/256th of a character width)
* @param column - the column to set (0-based)
/**
* get the default row height for the sheet (if the rows do not define their own height) in
* twips (1/20 of a point)
- * @retun default row height
+ * @return default row height
*/
public short getDefaultRowHeight()
public void setDefaultRowHeightInPoints(float height)
{
- sheet.setDefaultRowHeight(( short ) (height * 20));
+ sheet.setDefaultRowHeight((short) (height * 20));
}
/**
public int addMergedRegion(Region region)
{
- return sheet.addMergedRegion(( short ) region.getRowFrom(),
- region.getColumnFrom(),
- ( short ) region.getRowTo(),
- region.getColumnTo());
+ return sheet.addMergedRegion((short) region.getRowFrom(),
+ region.getColumnFrom(),
+ (short) region.getRowTo(),
+ region.getColumnTo());
}
/**
public void setVerticallyCenter(boolean value)
{
VCenterRecord record =
- ( VCenterRecord ) sheet.findFirstRecordBySid(VCenterRecord.sid);
+ (VCenterRecord) sheet.findFirstRecordBySid(VCenterRecord.sid);
record.setVCenter(value);
}
public boolean getVerticallyCenter(boolean value)
{
VCenterRecord record =
- ( VCenterRecord ) sheet.findFirstRecordBySid(VCenterRecord.sid);
+ (VCenterRecord) sheet.findFirstRecordBySid(VCenterRecord.sid);
return record.getVCenter();
}
}
/**
- * @returns an iterator of the PHYSICAL rows. Meaning the 3rd element may not
+ * @return an iterator of the PHYSICAL rows. Meaning the 3rd element may not
* be the third row if say for instance the second row is undefined.
*/
public void setAlternativeExpression(boolean b)
{
WSBoolRecord record =
- ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+ (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
record.setAlternateExpression(b);
}
public void setAlternativeFormula(boolean b)
{
WSBoolRecord record =
- ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+ (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
record.setAlternateFormula(b);
}
public void setAutobreaks(boolean b)
{
WSBoolRecord record =
- ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+ (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
record.setAutobreaks(b);
}
public void setDialog(boolean b)
{
WSBoolRecord record =
- ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+ (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
record.setDialog(b);
}
public void setDisplayGuts(boolean b)
{
WSBoolRecord record =
- ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+ (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
record.setDisplayGuts(b);
}
public void setFitToPage(boolean b)
{
WSBoolRecord record =
- ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+ (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
record.setFitToPage(b);
}
public void setRowSumsBelow(boolean b)
{
WSBoolRecord record =
- ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+ (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
record.setRowSumsBelow(b);
}
public void setRowSumsRight(boolean b)
{
WSBoolRecord record =
- ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+ (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
record.setRowSumsRight(b);
}
public boolean getAlternateExpression()
{
- return (( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid))
- .getAlternateExpression();
+ return ((WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid))
+ .getAlternateExpression();
}
/**
public boolean getAlternateFormula()
{
- return (( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid))
- .getAlternateFormula();
+ return ((WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid))
+ .getAlternateFormula();
}
/**
public boolean getAutobreaks()
{
- return (( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid))
- .getAutobreaks();
+ return ((WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid))
+ .getAutobreaks();
}
/**
public boolean getDialog()
{
- return (( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid))
- .getDialog();
+ return ((WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid))
+ .getDialog();
}
/**
public boolean getDisplayGuts()
{
- return (( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid))
- .getDisplayGuts();
+ return ((WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid))
+ .getDisplayGuts();
}
/**
public boolean getFitToPage()
{
- return (( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid))
- .getFitToPage();
+ return ((WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid))
+ .getFitToPage();
}
/**
public boolean getRowSumsBelow()
{
- return (( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid))
- .getRowSumsBelow();
+ return ((WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid))
+ .getRowSumsBelow();
}
/**
public boolean getRowSumsRight()
{
- return (( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid))
- .getRowSumsRight();
+ return ((WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid))
+ .getRowSumsRight();
}
}
package org.apache.poi.hssf.usermodel;
import junit.framework.TestCase;
-import org.apache.poi.hssf.record.RowRecord;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
/**
* Test HSSFRow is okay.
assertEquals(1, row.getFirstCellNum());
assertEquals(2, row.getLastCellNum());
- RowRecord rowRecord = new RowRecord();
- rowRecord.setFirstCol((short) 2);
- rowRecord.setLastCol((short) 5);
- row = new HSSFRow(workbook.getWorkbook(), sheet.getSheet(), rowRecord);
- assertEquals(2, row.getFirstCellNum());
- assertEquals(5, row.getLastCellNum());
}
public void testRemoveCell()
+ throws Exception
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow((short) 0);
assertEquals(-1, row.getLastCellNum());
assertEquals(-1, row.getFirstCellNum());
- row.createCell((short)1);
+ row.createCell((short) 1);
assertEquals(1, row.getLastCellNum());
assertEquals(1, row.getFirstCellNum());
- row.createCell((short)3);
+ row.createCell((short) 3);
assertEquals(3, row.getLastCellNum());
assertEquals(1, row.getFirstCellNum());
- row.removeCell(row.getCell((short)3));
+ row.removeCell(row.getCell((short) 3));
assertEquals(1, row.getLastCellNum());
assertEquals(1, row.getFirstCellNum());
- row.removeCell(row.getCell((short)1));
+ row.removeCell(row.getCell((short) 1));
assertEquals(-1, row.getLastCellNum());
assertEquals(-1, row.getFirstCellNum());
+ // 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]);
+
+ File file = File.createTempFile("XXX", "XLS");
+ FileOutputStream stream = new FileOutputStream(file);
+ workbook.write(stream);
+ stream.close();
+ FileInputStream inputStream = new FileInputStream(file);
+ workbook = new HSSFWorkbook(inputStream);
+ sheet = workbook.getSheetAt(0);
+ stream.close();
+ file.delete();
+ assertEquals(-1, sheet.getRow((short) 0).getLastCellNum());
+ assertEquals(-1, sheet.getRow((short) 0).getFirstCellNum());
+
+
}
}
import org.apache.poi.hssf.model.Sheet;
import org.apache.poi.hssf.record.VCenterRecord;
import org.apache.poi.hssf.record.WSBoolRecord;
-import org.apache.poi.hssf.dev.BiffViewer;
import java.io.File;
import java.io.FileInputStream;
tempFile.delete();
assertNotNull(row);
assertEquals(2, row.getPhysicalNumberOfCells());
+ }
-
+ public void testRemoveRow()
+ {
+ HSSFWorkbook workbook = new HSSFWorkbook();
+ HSSFSheet sheet = workbook.createSheet("Test boolean");
+ HSSFRow row = sheet.createRow((short) 2);
+ sheet.removeRow(row);
}
+
}