From df218dd45e47e273778b06c5badd4e7cf9531017 Mon Sep 17 00:00:00 2001 From: Shawn Laubach Date: Fri, 25 Jul 2003 13:39:08 +0000 Subject: [PATCH] Adding changes recently added to release 2. Includes rewrite of margin code, fixes for duplicate DataFormat, and cleanup of files I noticed that was 1 line. git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353242 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/hssf/model/Sheet.java | 147 +++---- .../poi/hssf/usermodel/HSSFPrintSetup.java | 398 +++++++++++++++++- .../poi/hssf/usermodel/HSSFWorkbook.java | 14 +- .../poi/hssf/usermodel/TestWorkbook.java | 2 + 4 files changed, 487 insertions(+), 74 deletions(-) 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 * . */package org.apache.poi.hssf.usermodel;import org.apache.poi.hssf.record.PrintSetupRecord;/** * Used to modify the print setup. *

* 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 + * . + */ +package org.apache.poi.hssf.usermodel; + +import org.apache.poi.hssf.record.PrintSetupRecord; +/** + * Used to modify the print setup. + *

+ * 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(); }