diff --git a/src/java/org/apache/poi/hssf/model/Sheet.java b/src/java/org/apache/poi/hssf/model/Sheet.java index 6e062eb6a2..a4dc8ffdc1 100644 --- a/src/java/org/apache/poi/hssf/model/Sheet.java +++ b/src/java/org/apache/poi/hssf/model/Sheet.java @@ -108,6 +108,7 @@ public class Sheet implements Model protected HeaderRecord header = null; protected FooterRecord footer = null; protected PrintGridlinesRecord printGridlines = null; + protected WindowTwoRecord windowTwo = null; protected MergeCellsRecord merged = null; protected Margin margins[] = null; protected ArrayList mergedRecords = new ArrayList(); @@ -280,6 +281,10 @@ public class Sheet implements Model { retval.getMargins()[BottomMargin] = (BottomMarginRecord) rec; } + else if ( rec.getSid() == WindowTwoRecord.sid ) + { + retval.windowTwo = (WindowTwoRecord) rec; + } if (rec != null) { @@ -406,7 +411,7 @@ public class Sheet implements Model retval.dims = ( DimensionsRecord ) retval.createDimensions(); retval.dimsloc = 19; records.add(retval.dims); - records.add(retval.createWindowTwo()); + records.add(retval.windowTwo = retval.createWindowTwo()); retval.setLoc(records.size() - 1); retval.selection = (SelectionRecord) retval.createSelection(); @@ -2066,7 +2071,7 @@ public class Sheet implements Model * @return record containing a WindowTwoRecord */ - protected Record createWindowTwo() + protected WindowTwoRecord createWindowTwo() { WindowTwoRecord retval = new WindowTwoRecord(); @@ -2399,7 +2404,6 @@ public class Sheet implements Model * @param sel True to select the sheet, false otherwise. */ public void setSelected(boolean sel) { - WindowTwoRecord windowTwo = (WindowTwoRecord) findFirstRecordBySid(WindowTwoRecord.sid); windowTwo.setSelected(sel); } @@ -2498,9 +2502,8 @@ public class Sheet implements Model } records.add(loc+1, pane); - WindowTwoRecord windowRecord = (WindowTwoRecord) records.get(loc); - windowRecord.setFreezePanes(true); - windowRecord.setFreezePanesNoSplit(true); + windowTwo.setFreezePanes(true); + windowTwo.setFreezePanesNoSplit(true); SelectionRecord sel = (SelectionRecord) findFirstRecordBySid(SelectionRecord.sid); // SelectionRecord sel2 = (SelectionRecord) sel.clone(); @@ -2548,9 +2551,8 @@ public class Sheet implements Model r.setActivePane((short) activePane); records.add(loc+1, r); - WindowTwoRecord windowRecord = (WindowTwoRecord) records.get(loc); - windowRecord.setFreezePanes(false); - windowRecord.setFreezePanesNoSplit(false); + windowTwo.setFreezePanes(false); + windowTwo.setFreezePanesNoSplit(false); SelectionRecord sel = (SelectionRecord) findFirstRecordBySid(SelectionRecord.sid); // SelectionRecord sel2 = (SelectionRecord) sel.clone(); @@ -2584,6 +2586,54 @@ public class Sheet implements Model this.selection = selection; } + /** + * Sets whether the gridlines are shown in a viewer. + * @param show whether to show gridlines or not + */ + public void setDisplayGridlines(boolean show) { + windowTwo.setDisplayGridlines(show); + } + + /** + * Returns if gridlines are displayed. + * @return whether gridlines are displayed + */ + public boolean isDisplayGridlines() { + return windowTwo.getDisplayGridlines(); + } + + /** + * Sets whether the formulas are shown in a viewer. + * @param show whether to show formulas or not + */ + public void setDisplayFormulas(boolean show) { + windowTwo.setDisplayFormulas(show); + } + + /** + * Returns if formulas are displayed. + * @return whether formulas are displayed + */ + public boolean isDisplayFormulas() { + return windowTwo.getDisplayFormulas(); + } + + /** + * Sets whether the RowColHeadings are shown in a viewer. + * @param show whether to show RowColHeadings or not + */ + public void setDisplayRowColHeadings(boolean show) { + windowTwo.setDisplayRowColHeadings(show); + } + + /** + * Returns if RowColHeadings are displayed. + * @return whether RowColHeadings are displayed + */ + public boolean isDisplayRowColHeadings() { + return windowTwo.getDisplayRowColHeadings(); + } + /** * Returns the array of margins. If not created, will create. * @@ -2594,5 +2644,4 @@ public class Sheet implements Model margins = new Margin[4]; return margins; } - } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 136fd09307..803a469a92 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -1083,7 +1083,53 @@ public class HSSFSheet getSheet().createSplitPane( xSplitPos, ySplitPos, topRow, leftmostColumn, activePane ); } + /** + * Sets whether the gridlines are shown in a viewer. + * @param show whether to show gridlines or not + */ + public void setDisplayGridlines(boolean show) { + sheet.setDisplayGridlines(show); + } + /** + * Returns if gridlines are displayed. + * @return whether gridlines are displayed + */ + public boolean isDisplayGridlines() { + return sheet.isDisplayGridlines(); + } + + /** + * Sets whether the formulas are shown in a viewer. + * @param show whether to show formulas or not + */ + public void setDisplayFormulas(boolean show) { + sheet.setDisplayFormulas(show); + } + + /** + * Returns if formulas are displayed. + * @return whether formulas are displayed + */ + public boolean isDisplayFormulas() { + return sheet.isDisplayFormulas(); + } + + /** + * Sets whether the RowColHeadings are shown in a viewer. + * @param show whether to show RowColHeadings or not + */ + public void setDisplayRowColHeadings(boolean show) { + sheet.setDisplayRowColHeadings(show); + } + + /** + * Returns if RowColHeadings are displayed. + * @return whether RowColHeadings are displayed + */ + public boolean isDisplayRowColHeadings() { + return sheet.isDisplayRowColHeadings(); + } } class SheetRowIterator implements Iterator { @@ -1112,6 +1158,4 @@ class SheetRowIterator implements Iterator { public void remove() { rows.remove(); } - - } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java index 2ce397c26d..e2e30f73f8 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java @@ -318,8 +318,49 @@ public class TestHSSFSheet } + /** + * Tests the display of gridlines, formulas, and rowcolheadings. + * @author Shawn Laubach (slaubach at apache dot org) + */ + public void testDisplayOptions() throws Exception { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet(); + + File tempFile = File.createTempFile("display", "test.xls"); + FileOutputStream stream = new FileOutputStream(tempFile); + wb.write(stream); + stream.close(); + + FileInputStream readStream = new FileInputStream(tempFile); + wb = new HSSFWorkbook(readStream); + sheet = wb.getSheetAt(0); + readStream.close(); + + assertEquals(sheet.isDisplayGridlines(), true); + assertEquals(sheet.isDisplayRowColHeadings(), true); + assertEquals(sheet.isDisplayFormulas(), false); + + sheet.setDisplayGridlines(false); + sheet.setDisplayRowColHeadings(false); + sheet.setDisplayFormulas(true); + + tempFile = File.createTempFile("display", "test.xls"); + stream = new FileOutputStream(tempFile); + wb.write(stream); + stream.close(); + + readStream = new FileInputStream(tempFile); + wb = new HSSFWorkbook(readStream); + sheet = wb.getSheetAt(0); + readStream.close(); + + + assertEquals(sheet.isDisplayGridlines(), false); + assertEquals(sheet.isDisplayRowColHeadings(), false); + assertEquals(sheet.isDisplayFormulas(), true); + } + public static void main(java.lang.String[] args) { junit.textui.TestRunner.run(TestHSSFSheet.class); - } - + } }