diff options
author | Nick Burch <nick@apache.org> | 2008-05-23 13:12:43 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2008-05-23 13:12:43 +0000 |
commit | 6c9ab3d4ef790d1b3b2dfc8daccf1f216c71009a (patch) | |
tree | fb63834541460cb027f296191cd81a791f949d55 /src/java | |
parent | 877e4efa74a270406a9f4f7e73833f8815e47f47 (diff) | |
download | poi-6c9ab3d4ef790d1b3b2dfc8daccf1f216c71009a.tar.gz poi-6c9ab3d4ef790d1b3b2dfc8daccf1f216c71009a.zip |
Merged revisions 638786-638802,638805-638811,638813-638814,638816-639230,639233-639241,639243-639253,639255-639486,639488-639601,639603-639835,639837-639917,639919-640056,640058-640710,640712-641156,641158-641184,641186-641795,641797-641798,641800-641933,641935-641963,641965-641966,641968-641995,641997-642230,642232-642562,642564-642565,642568-642570,642572-642573,642576-642736,642739-642877,642879,642881-642890,642892-642903,642905-642945,642947-643624,643626-643653,643655-643669,643671,643673-643830,643832-643833,643835-644342,644344-644472,644474-644508,644510-645347,645349-645351,645353-645559,645561-645565,645568-645951,645953-646193,646195-646311,646313-646404,646406-646665,646667-646853,646855-646869,646871-647151,647153-647185,647187-647277,647279-647566,647568-647573,647575,647578-647711,647714-647737,647739-647823,647825-648155,648157-648202,648204-648273,648275,648277-648302,648304-648333,648335-648588,648590-648622,648625-648673,648675-649141,649144,649146-649556,649558-649795,649799,649801-649910,649912-649913,649915-650128,650131-650132,650134-650137,650140-650914,650916-651991,651993-652284,652286-652287,652289,652291,652293-652297,652299-652328,652330-652425,652427-652445,652447-652560,652562-652933,652935,652937-652993,652995-653116,653118-653124,653126-653483,653487-653519,653522-653550,653552-653607,653609-653667,653669-653674,653676-653814,653817-653830,653832-653891,653893-653944,653946-654055,654057-654355,654357-654365,654367-654648,654651-655215,655217-655277,655279-655281,655283-655911,655913-656212,656214,656216-656251,656253-656698,656700-656756,656758-656892,656894-657135,657137-657165,657168-657179,657181-657354,657356-657357,657359-657701,657703-657874,657876-658032,658034-658284,658286,658288-658301,658303-658307,658309-658321,658323-658335,658337-658348,658351,658353-658832,658834-658983,658985,658987-659066,659068-659402,659404-659428,659430-659451,659453-659454,659456-659461,659463-659477,659479-659525 via svnmerge from
https://svn.apache.org:443/repos/asf/poi/trunk
........
r659525 | nick | 2008-05-23 13:58:56 +0100 (Fri, 23 May 2008) | 1 line
Extend the support for specifying a policy to HSSF on missing / blank cells when fetching, to be able to specify the policy at the HSSFWorkbook level
........
Also, port this to XSSF
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@659533 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java')
-rw-r--r-- | src/java/org/apache/poi/hssf/usermodel/HSSFRow.java | 29 | ||||
-rw-r--r-- | src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java | 31 |
2 files changed, 51 insertions, 9 deletions
diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java b/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java index 056c872e7c..3e95aaee4c 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java @@ -295,8 +295,23 @@ public final class HSSFRow implements Comparable, Row { /** * Get the hssfcell representing a given column (logical cell) - * 0-based. If you ask for a cell that is not defined.... + * 0-based. If you ask for a cell that is not defined, then * you get a null. + * This is the basic call, with no policies applied + * + * @param cellnum 0 based column number + * @return HSSFCell representing that column or null if undefined. + */ + private HSSFCell retrieveCell(int cellnum) { + if(cellnum<0||cellnum>=cells.length) return null; + return cells[cellnum]; + } + + /** + * Get the hssfcell representing a given column (logical cell) + * 0-based. If you ask for a cell that is not defined then + * you get a null, unless you have set a different + * {@link MissingCellPolicy} on the base workbook. * Short method signature provided to retain binary * compatibility. * @@ -307,17 +322,18 @@ public final class HSSFRow implements Comparable, Row { int ushortCellNum = cellnum & 0x0000FFFF; // avoid sign extension return getCell(ushortCellNum); } + /** * 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. + * 0-based. If you ask for a cell that is not defined then + * you get a null, unless you have set a different + * {@link MissingCellPolicy} on the base workbook. * * @param cellnum 0 based column number * @return HSSFCell representing that column or null if undefined. */ public HSSFCell getCell(int cellnum) { - if(cellnum<0||cellnum>=cells.length) return null; - return cells[cellnum]; + return getCell(cellnum, book.getMissingCellPolicy()); } /** @@ -330,7 +346,7 @@ public final class HSSFRow implements Comparable, Row { * @return representing that column or null if undefined + policy allows. */ public HSSFCell getCell(int cellnum, MissingCellPolicy policy) { - HSSFCell cell = getCell(cellnum); + HSSFCell cell = retrieveCell(cellnum); if(policy == RETURN_NULL_AND_BLANK) { return cell; } @@ -354,7 +370,6 @@ public final class HSSFRow implements Comparable, Row { * get the number of the first cell contained in this row. * @return short representing the first logical cell in the row, or -1 if the row does not contain any cells. */ - public short getFirstCellNum() { if (getPhysicalNumberOfCells() == 0) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 32fce2f099..c059b028af 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -51,7 +51,6 @@ import org.apache.poi.hssf.record.RecordFactory; import org.apache.poi.hssf.record.SSTRecord; import org.apache.poi.hssf.record.UnicodeString; import org.apache.poi.hssf.record.UnknownRecord; -import org.apache.poi.hssf.record.WindowTwoRecord; import org.apache.poi.hssf.record.formula.Area3DPtg; import org.apache.poi.hssf.record.formula.MemFuncPtg; import org.apache.poi.hssf.record.formula.UnionPtg; @@ -60,6 +59,7 @@ import org.apache.poi.hssf.util.SheetReferences; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.Row.MissingCellPolicy; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; @@ -119,6 +119,13 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm * someplace else. */ private HSSFDataFormat formatter; + + /** + * The policy to apply in the event of missing or + * blank cells when fetching from a row. + * See {@link MissingCellPolicy} + */ + private MissingCellPolicy missingCellPolicy = HSSFRow.RETURN_NULL_AND_BLANK; /** Extended windows meta file */ @@ -362,8 +369,28 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm log.log(POILogger.DEBUG, "convertLabelRecords exit"); } + /** + * Retrieves the current policy on what to do when + * getting missing or blank cells from a row. + * The default is to return blank and null cells. + * {@link MissingCellPolicy} + */ + public MissingCellPolicy getMissingCellPolicy() { + return missingCellPolicy; + } + + /** + * Sets the policy on what to do when + * getting missing or blank cells from a row. + * This will then apply to all calls to + * {@link Row.getCell()}. See + * {@link MissingCellPolicy} + */ + public void setMissingCellPolicy(MissingCellPolicy missingCellPolicy) { + this.missingCellPolicy = missingCellPolicy; + } - /** + /** * sets the order of appearance for a given sheet. * * @param sheetname the name of the sheet to reorder |