diff --git a/src/java/org/apache/poi/hssf/model/Sheet.java b/src/java/org/apache/poi/hssf/model/Sheet.java
index 80010ac3a..881a6790f 100644
--- a/src/java/org/apache/poi/hssf/model/Sheet.java
+++ b/src/java/org/apache/poi/hssf/model/Sheet.java
@@ -109,6 +109,7 @@ public class Sheet implements Model
protected FooterRecord footer = null;
protected PrintGridlinesRecord printGridlines = null;
protected MergeCellsRecord merged = null;
+ protected Margin margins[] = null;
protected ArrayList mergedRecords = new ArrayList();
protected ArrayList mergedLocs = new ArrayList();
protected int numMergedRegions = 0;
@@ -263,7 +264,23 @@ public class Sheet implements Model
{
retval.printSetup = (PrintSetupRecord) rec;
}
-
+ else if ( rec.getSid() == LeftMarginRecord.sid)
+ {
+ retval.getMargins()[LeftMargin] = (LeftMarginRecord) rec;
+ }
+ else if ( rec.getSid() == RightMarginRecord.sid)
+ {
+ retval.getMargins()[RightMargin] = (RightMarginRecord) rec;
+ }
+ else if ( rec.getSid() == TopMarginRecord.sid)
+ {
+ retval.getMargins()[TopMargin] = (TopMarginRecord) rec;
+ }
+ else if ( rec.getSid() == BottomMarginRecord.sid)
+ {
+ retval.getMargins()[BottomMargin] = (BottomMarginRecord) rec;
+ }
+
if (rec != null)
{
records.add(rec);
@@ -2391,82 +2408,59 @@ public class Sheet implements Model
* @param margin which margin to get
* @return the size of the margin
*/
- public double getMargin(short margin) {
- Margin m;
- switch ( margin )
- {
- case LeftMargin:
- m = (Margin) findFirstRecordBySid( LeftMarginRecord.sid );
- if ( m == null )
- return .75;
- break;
- case RightMargin:
- m = (Margin) findFirstRecordBySid( RightMarginRecord.sid );
- if ( m == null )
- return .75;
- break;
- case TopMargin:
- m = (Margin) findFirstRecordBySid( TopMarginRecord.sid );
- if ( m == null )
- return 1.0;
- break;
- case BottomMargin:
- m = (Margin) findFirstRecordBySid( BottomMarginRecord.sid );
- if ( m == null )
- return 1.0;
- break;
- default :
- throw new RuntimeException( "Unknown margin constant: " + margin );
- }
- return m.getMargin();
- }
+ public double getMargin(short margin) {
+ if (getMargins()[margin] != null)
+ return margins[margin].getMargin();
+ else {
+ switch ( margin )
+ {
+ case LeftMargin:
+ return .75;
+ case RightMargin:
+ return .75;
+ case TopMargin:
+ return 1.0;
+ case BottomMargin:
+ return 1.0;
+ default :
+ throw new RuntimeException( "Unknown margin constant: " + margin );
+ }
+ }
+ }
/**
* Sets the size of the margin in inches.
* @param margin which margin to get
* @param size the size of the margin
*/
- public void setMargin(short margin, double size) {
- Margin m;
- switch ( margin )
- {
- case LeftMargin:
- m = (Margin) findFirstRecordBySid( LeftMarginRecord.sid );
- if ( m == null )
- {
- m = new LeftMarginRecord();
- records.add( getDimsLoc() + 1, m );
- }
- break;
- case RightMargin:
- m = (Margin) findFirstRecordBySid( RightMarginRecord.sid );
- if ( m == null )
- {
- m = new RightMarginRecord();
- records.add( getDimsLoc() + 1, m );
- }
- break;
- case TopMargin:
- m = (Margin) findFirstRecordBySid( TopMarginRecord.sid );
- if ( m == null )
- {
- m = new TopMarginRecord();
- records.add( getDimsLoc() + 1, m );
- }
- break;
- case BottomMargin:
- m = (Margin) findFirstRecordBySid( BottomMarginRecord.sid );
- if ( m == null )
- {
- m = new BottomMarginRecord();
- records.add( getDimsLoc() + 1, m );
- }
- break;
- default :
- throw new RuntimeException( "Unknown margin constant: " + margin );
- }
- m.setMargin( size );
- }
+ public void setMargin(short margin, double size) {
+ Margin m = getMargins()[margin];
+ if (m == null) {
+ switch ( margin )
+ {
+ case LeftMargin:
+ m = new LeftMarginRecord();
+ records.add( getDimsLoc() + 1, m );
+ break;
+ case RightMargin:
+ m = new RightMarginRecord();
+ records.add( getDimsLoc() + 1, m );
+ break;
+ case TopMargin:
+ m = new TopMarginRecord();
+ records.add( getDimsLoc() + 1, m );
+ break;
+ case BottomMargin:
+ m = new BottomMarginRecord();
+ records.add( getDimsLoc() + 1, m );
+ break;
+ default :
+ throw new RuntimeException( "Unknown margin constant: " + margin );
+ }
+ margins[margin] = m;
+ }
+ m.setMargin( size );
+ }
public int getEofLoc()
{
@@ -2590,4 +2584,15 @@ public class Sheet implements Model
this.selection = selection;
}
+ /**
+ * Returns the array of margins. If not created, will create.
+ *
+ * @return the array of marings.
+ */
+ protected Margin[] getMargins() {
+ if (margins == null)
+ margins = new Margin[4];
+ return margins;
+ }
+
}
diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFPrintSetup.java b/src/java/org/apache/poi/hssf/usermodel/HSSFPrintSetup.java
index 9ea8c65d5..69085fda2 100644
--- a/src/java/org/apache/poi/hssf/usermodel/HSSFPrintSetup.java
+++ b/src/java/org/apache/poi/hssf/usermodel/HSSFPrintSetup.java
@@ -1 +1,397 @@
-/* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache POI" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * "Apache POI", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see *
* Paper size constants have been added for the ones I have access * to. They follow as:
* public final short LETTER_PAPERSIZE = 1;
* public final short LEGAL_PAPERSIZE = 5;
* public final short EXECUTIVE_PAPERSIZE = 7;
* public final short A4_PAPERSIZE = 9;
* public final short A5_PAPERSIZE = 11;
* public final short ENVELOPE_10_PAPERSIZE = 20;
* public final short ENVELOPE_DL_PAPERSIZE = 27;
* public final short ENVELOPE_CS_PAPERSIZE = 28;
* public final short ENVELOPE_MONARCH_PAPERSIZE = 37;
*
* @author Shawn Laubach (slaubach at apache dot org) */public class HSSFPrintSetup extends Object { public final short LETTER_PAPERSIZE = 1; public final short LEGAL_PAPERSIZE = 5; public final short EXECUTIVE_PAPERSIZE = 7; public final short A4_PAPERSIZE = 9; public final short A5_PAPERSIZE = 11; public final short ENVELOPE_10_PAPERSIZE = 20; public final short ENVELOPE_DL_PAPERSIZE = 27; public final short ENVELOPE_CS_PAPERSIZE = 28; public final short ENVELOPE_MONARCH_PAPERSIZE = 37; PrintSetupRecord printSetupRecord; /** * Constructor. Takes the low level print setup record. * @param printSetupRecord the low level print setup record */ protected HSSFPrintSetup(PrintSetupRecord printSetupRecord) { this.printSetupRecord = printSetupRecord; } /** * Set the paper size. * @param size the paper size. */ public void setPaperSize(short size) { printSetupRecord.setPaperSize(size); } /** * Set the scale. * @param scale the scale to use */ public void setScale(short scale) { printSetupRecord.setScale(scale); } /** * Set the page numbering start. * @param start the page numbering start */ public void setPageStart(short start) { printSetupRecord.setPageStart(start); } /** * Set the number of pages wide to fit the sheet in * @param width the number of pages */ public void setFitWidth(short width) { printSetupRecord.setFitWidth(width); } /** * Set the number of pages high to fit the sheet in * @param height the number of pages */ public void setFitHeight(short height) { printSetupRecord.setFitHeight(height); } /** * Sets the options flags. Not advisable to do it directly. * @param options The bit flags for the options */ public void setOptions(short options) { printSetupRecord.setOptions(options); } /** * Set whether to go left to right or top down in ordering * @param ltor left to right */ public void setLeftToRight(boolean ltor) { printSetupRecord.setLeftToRight(ltor); } /** * Set whether to print in landscape * @param ls landscape */ public void setLandscape(boolean ls) { printSetupRecord.setLandscape(!ls); } /** * Valid settings. I'm not for sure. * @param valid Valid */ public void setValidSettings(boolean valid) { printSetupRecord.setValidSettings(valid); } /** * Set whether it is black and white * @param mono Black and white */ public void setNoColor(boolean mono) { printSetupRecord.setNoColor(mono); } /** * Set whether it is in draft mode * @param d draft */ public void setDraft(boolean d) { printSetupRecord.setDraft(d); } /** * Print the include notes * @param printnotes print the notes */ public void setNotes(boolean printnotes) { printSetupRecord.setNotes(printnotes); } /** * Set no orientation. ? * @param orientation Orientation. */ public void setNoOrientation(boolean orientation) { printSetupRecord.setNoOrientation(orientation); } /** * Set whether to use page start * @param page Use page start */ public void setUsePage(boolean page) { printSetupRecord.setUsePage(page); } /** * Sets the horizontal resolution. * @param resolution horizontal resolution */ public void setHResolution(short resolution) { printSetupRecord.setHResolution(resolution); } /** * Sets the vertical resolution. * @param resolution vertical resolution */ public void setVResolution(short resolution) { printSetupRecord.setVResolution(resolution); } /** * Sets the header margin. * @param headermargin header margin */ public void setHeaderMargin(double headermargin) { printSetupRecord.setHeaderMargin(headermargin); } /** * Sets the footer margin. * @param footermargin footer margin */ public void setFooterMargin(double footermargin) { printSetupRecord.setFooterMargin(footermargin); } /** * Sets the number of copies. * @param copies number of copies */ public void setCopies(short copies) { printSetupRecord.setCopies(copies); } /** * Returns the paper size. * @return paper size */ public short getPaperSize() { return printSetupRecord.getPaperSize(); } /** * Returns the scale. * @return scale */ public short getScale() { return printSetupRecord.getScale(); } /** * Returns the page start. * @return page start */ public short getPageStart() { return printSetupRecord.getPageStart(); } /** * Returns the number of pages wide to fit sheet in. * @return number of pages wide to fit sheet in */ public short getFitWidth() { return printSetupRecord.getFitWidth(); } /** * Returns the number of pages high to fit the sheet in. * @return number of pages high to fit the sheet in */ public short getFitHeight() { return printSetupRecord.getFitHeight(); } /** * Returns the bit flags for the options. * @return bit flags for the options */ public short getOptions() { return printSetupRecord.getOptions(); } /** * Returns the left to right print order. * @return left to right print order */ public boolean getLeftToRight() { return printSetupRecord.getLeftToRight(); } /** * Returns the landscape mode. * @return landscape mode */ public boolean getLandscape() { return !printSetupRecord.getLandscape(); } /** * Returns the valid settings. * @return valid settings */ public boolean getValidSettings() { return printSetupRecord.getValidSettings(); } /** * Returns the black and white setting. * @return black and white setting */ public boolean getNoColor() { return printSetupRecord.getNoColor(); } /** * Returns the draft mode. * @return draft mode */ public boolean getDraft() { return printSetupRecord.getDraft(); } /** * Returns the print notes. * @return print notes */ public boolean getNotes() { return printSetupRecord.getNotes(); } /** * Returns the no orientation. * @return no orientation */ public boolean getNoOrientation() { return printSetupRecord.getNoOrientation(); } /** * Returns the use page numbers. * @return use page numbers */ public boolean getUsePage() { return printSetupRecord.getUsePage(); } /** * Returns the horizontal resolution. * @return horizontal resolution */ public short getHResolution() { return printSetupRecord.getHResolution(); } /** * Returns the vertical resolution. * @return vertical resolution */ public short getVResolution() { return printSetupRecord.getVResolution(); } /** * Returns the header margin. * @return header margin */ public double getHeaderMargin() { return printSetupRecord.getHeaderMargin(); } /** * Returns the footer margin. * @return footer margin */ public double getFooterMargin() { return printSetupRecord.getFooterMargin(); } /** * Returns the number of copies. * @return number of copies */ public short getCopies() { return printSetupRecord.getCopies(); }}
\ No newline at end of file
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ *
+ * Paper size constants have been added for the ones I have access
+ * to. They follow as:
+ * public final short LETTER_PAPERSIZE = 1;
+ * public final short LEGAL_PAPERSIZE = 5;
+ * public final short EXECUTIVE_PAPERSIZE = 7;
+ * public final short A4_PAPERSIZE = 9;
+ * public final short A5_PAPERSIZE = 11;
+ * public final short ENVELOPE_10_PAPERSIZE = 20;
+ * public final short ENVELOPE_DL_PAPERSIZE = 27;
+ * public final short ENVELOPE_CS_PAPERSIZE = 28;
+ * public final short ENVELOPE_MONARCH_PAPERSIZE = 37;
+ *
+ * @author Shawn Laubach (slaubach at apache dot org) + */ +public class HSSFPrintSetup extends Object { + public final short LETTER_PAPERSIZE = 1; + public final short LEGAL_PAPERSIZE = 5; + public final short EXECUTIVE_PAPERSIZE = 7; + public final short A4_PAPERSIZE = 9; + public final short A5_PAPERSIZE = 11; + public final short ENVELOPE_10_PAPERSIZE = 20; + public final short ENVELOPE_DL_PAPERSIZE = 27; + public final short ENVELOPE_CS_PAPERSIZE = 28; + public final short ENVELOPE_MONARCH_PAPERSIZE = 37; + PrintSetupRecord printSetupRecord; + /** + * Constructor. Takes the low level print setup record. + * @param printSetupRecord the low level print setup record + */ + protected HSSFPrintSetup (PrintSetupRecord printSetupRecord) + { + this.printSetupRecord = printSetupRecord; + } + /** + * Set the paper size. + * @param size the paper size. + */ + public void setPaperSize (short size) + { + printSetupRecord.setPaperSize (size); + } + /** + * Set the scale. + * @param scale the scale to use + */ + public void setScale (short scale) + { + printSetupRecord.setScale (scale); + } + /** + * Set the page numbering start. + * @param start the page numbering start + */ + public void setPageStart (short start) + { + printSetupRecord.setPageStart (start); + } + /** + * Set the number of pages wide to fit the sheet in + * @param width the number of pages + */ + public void setFitWidth (short width) + { + printSetupRecord.setFitWidth (width); + } + /** + * Set the number of pages high to fit the sheet in + * @param height the number of pages + */ + public void setFitHeight (short height) + { + printSetupRecord.setFitHeight (height); + } + /** + * Sets the options flags. Not advisable to do it directly. + * @param options The bit flags for the options + */ + public void setOptions (short options) + { + printSetupRecord.setOptions (options); + } + /** + * Set whether to go left to right or top down in ordering + * @param ltor left to right + */ + public void setLeftToRight (boolean ltor) + { + printSetupRecord.setLeftToRight (ltor); + } + /** + * Set whether to print in landscape + * @param ls landscape + */ + public void setLandscape (boolean ls) + { + printSetupRecord.setLandscape (!ls); + } + /** + * Valid settings. I'm not for sure. + * @param valid Valid + */ + public void setValidSettings (boolean valid) + { + printSetupRecord.setValidSettings (valid); + } + /** + * Set whether it is black and white + * @param mono Black and white + */ + public void setNoColor (boolean mono) + { + printSetupRecord.setNoColor (mono); + } + /** + * Set whether it is in draft mode + * @param d draft + */ + public void setDraft (boolean d) + { + printSetupRecord.setDraft (d); + } + /** + * Print the include notes + * @param printnotes print the notes + */ + public void setNotes (boolean printnotes) + { + printSetupRecord.setNotes (printnotes); + } + /** + * Set no orientation. ? + * @param orientation Orientation. + */ + public void setNoOrientation (boolean orientation) + { + printSetupRecord.setNoOrientation (orientation); + } + /** + * Set whether to use page start + * @param page Use page start + */ + public void setUsePage (boolean page) + { + printSetupRecord.setUsePage (page); + } + /** + * Sets the horizontal resolution. + * @param resolution horizontal resolution + */ + public void setHResolution (short resolution) + { + printSetupRecord.setHResolution (resolution); + } + /** + * Sets the vertical resolution. + * @param resolution vertical resolution + */ + public void setVResolution (short resolution) + { + printSetupRecord.setVResolution (resolution); + } + /** + * Sets the header margin. + * @param headermargin header margin + */ + public void setHeaderMargin (double headermargin) + { + printSetupRecord.setHeaderMargin (headermargin); + } + /** + * Sets the footer margin. + * @param footermargin footer margin + */ + public void setFooterMargin (double footermargin) + { + printSetupRecord.setFooterMargin (footermargin); + } + /** + * Sets the number of copies. + * @param copies number of copies + */ + public void setCopies (short copies) + { + printSetupRecord.setCopies (copies); + } + /** + * Returns the paper size. + * @return paper size + */ + public short getPaperSize () + { + return printSetupRecord.getPaperSize (); + } + /** + * Returns the scale. + * @return scale + */ + public short getScale () + { + return printSetupRecord.getScale (); + } + /** + * Returns the page start. + * @return page start + */ + public short getPageStart () + { + return printSetupRecord.getPageStart (); + } + /** + * Returns the number of pages wide to fit sheet in. + * @return number of pages wide to fit sheet in + */ + public short getFitWidth () + { + return printSetupRecord.getFitWidth (); + } + /** + * Returns the number of pages high to fit the sheet in. + * @return number of pages high to fit the sheet in + */ + public short getFitHeight () + { + return printSetupRecord.getFitHeight (); + } + /** + * Returns the bit flags for the options. + * @return bit flags for the options + */ + public short getOptions () + { + return printSetupRecord.getOptions (); + } + /** + * Returns the left to right print order. + * @return left to right print order + */ + public boolean getLeftToRight () + { + return printSetupRecord.getLeftToRight (); + } + /** + * Returns the landscape mode. + * @return landscape mode + */ + public boolean getLandscape () + { + return !printSetupRecord.getLandscape (); + } + /** + * Returns the valid settings. + * @return valid settings + */ + public boolean getValidSettings () + { + return printSetupRecord.getValidSettings (); + } + /** + * Returns the black and white setting. + * @return black and white setting + */ + public boolean getNoColor () + { + return printSetupRecord.getNoColor (); + } + /** + * Returns the draft mode. + * @return draft mode + */ + public boolean getDraft () + { + return printSetupRecord.getDraft (); + } + /** + * Returns the print notes. + * @return print notes + */ + public boolean getNotes () + { + return printSetupRecord.getNotes (); + } + /** + * Returns the no orientation. + * @return no orientation + */ + public boolean getNoOrientation () + { + return printSetupRecord.getNoOrientation (); + } + /** + * Returns the use page numbers. + * @return use page numbers + */ + public boolean getUsePage () + { + return printSetupRecord.getUsePage (); + } + /** + * Returns the horizontal resolution. + * @return horizontal resolution + */ + public short getHResolution () + { + return printSetupRecord.getHResolution (); + } + /** + * Returns the vertical resolution. + * @return vertical resolution + */ + public short getVResolution () + { + return printSetupRecord.getVResolution (); + } + /** + * Returns the header margin. + * @return header margin + */ + public double getHeaderMargin () + { + return printSetupRecord.getHeaderMargin (); + } + /** + * Returns the footer margin. + * @return footer margin + */ + public double getFooterMargin () + { + return printSetupRecord.getFooterMargin (); + } + /** + * Returns the number of copies. + * @return number of copies + */ + public short getCopies () + { + return printSetupRecord.getCopies (); + } +} diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 04f80af5a..70e08ced2 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -140,6 +140,14 @@ public class HSSFWorkbook * memory. */ private POIFSFileSystem poifs; + + /** + * Used to keep track of the data formatter so that all + * createDataFormatter calls return the same one for a given + * book. This ensures that updates from one places is visible + * someplace else. + */ + private HSSFDataFormat formatter; private static POILogger log = POILogFactory.getLogger(HSSFWorkbook.class); @@ -938,13 +946,15 @@ public class HSSFWorkbook } /** - * Creates an instance of HSSFDataFormat. + * Returns the instance of HSSFDataFormat for this workbook. * @return the HSSFDataFormat object * @see org.apache.poi.hssf.record.FormatRecord * @see org.apache.poi.hssf.record.Record */ public HSSFDataFormat createDataFormat() { - return new HSSFDataFormat(workbook); + if (formatter == null) + formatter = new HSSFDataFormat(workbook); + return formatter; } /** remove the named range by his name diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java index c8bc7b86b..6b5fd9744 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java @@ -304,6 +304,8 @@ public class TestWorkbook assertEquals(1.25,cell.getNumericCellValue(), 1e-10); assertEquals(format.getFormat(df), "0.0"); + + assertEquals(format, workbook.createDataFormat()); stream.close(); }