]> source.dussan.org Git - poi.git/commitdiff
Bugzilla 52626: fixed setting default row height in HSSF and XSSF
authorYegor Kozlov <yegor@apache.org>
Sun, 12 Feb 2012 11:14:23 +0000 (11:14 +0000)
committerYegor Kozlov <yegor@apache.org>
Sun, 12 Feb 2012 11:14:23 +0000 (11:14 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1243240 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/model/InternalSheet.java
src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFRow.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java

index c3db773929e496ad6797e48baf9c32d449ac2c14..0f03bbc4577e3f7c12c2fc7c15b558f8aeba8c92 100644 (file)
@@ -1002,6 +1002,8 @@ public final class InternalSheet {
      */
     public void setDefaultRowHeight(short dch) {
         defaultrowheight.setRowHeight(dch);
+        // set the bit that specifies that the default settings for the row height have been changed.
+        defaultrowheight.setOptionFlags((short)1);
     }
 
     /**
index 7a821b78860ccc082c8150fb018ce13d8b821a2f..a1bc0f36b7725b8278775e71613c32b42165e77b 100644 (file)
@@ -197,6 +197,8 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
     public HSSFRow createRow(int rownum)
     {
         HSSFRow row = new HSSFRow(_workbook, this, rownum);
+        // new rows inherit default height from the sheet
+        row.setHeight(getDefaultRowHeight());
 
         addRow(row, true);
         return row;
index b1d532427b2694c102243280583d3e376f392ccf..fa7ce429d82e00e41e4137ccfe5c6b3680b3fe1d 100644 (file)
@@ -2060,8 +2060,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
      * @param  height default row height in  twips (1/20 of  a point)
      */
     public void setDefaultRowHeight(short height) {
-        getSheetTypeSheetFormatPr().setDefaultRowHeight((double)height / 20);
-
+        setDefaultRowHeightInPoints((float)height / 20);
     }
 
     /**
@@ -2070,8 +2069,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
      * @param height default row height measured in point size.
      */
     public void setDefaultRowHeightInPoints(float height) {
-        getSheetTypeSheetFormatPr().setDefaultRowHeight(height);
-
+        CTSheetFormatPr pr = getSheetTypeSheetFormatPr();
+        pr.setDefaultRowHeight(height);
+        pr.setCustomHeight(true);
     }
 
     /**
index 2a3e06991c52617780c2dc178d4a33290581d2d1..1a0ff3bfa2b3d5ea11589b80eed04515081917d2 100644 (file)
@@ -19,6 +19,7 @@
 
 package org.apache.poi.xssf.streaming;
 
+import org.apache.poi.ss.SpreadsheetVersion;
 import org.apache.poi.ss.usermodel.BaseTestRow;
 import org.apache.poi.xssf.SXSSFITestDataProvider;
 
@@ -30,4 +31,13 @@ public final class TestSXSSFRow extends BaseTestRow {
     public TestSXSSFRow() {
         super(SXSSFITestDataProvider.instance);
     }
+
+    public void testRowBounds() {
+        baseTestRowBounds(SpreadsheetVersion.EXCEL2007.getLastRowIndex());
+    }
+
+    public void testCellBounds() {
+        baseTestCellBounds(SpreadsheetVersion.EXCEL2007.getLastColumnIndex());
+    }
+
 }
index da40cd076b5b825f325a0f786f03b29702e42d21..eb185471f469fd931592163d4973089b698ed2ae 100644 (file)
@@ -292,6 +292,7 @@ public abstract class BaseTestRow extends TestCase {
         assertEquals(20*20, row1.getHeight());
 
         Row row2 = sheet.createRow(1);
+        assertEquals(sheet.getDefaultRowHeight(), row2.getHeight());
         row2.setHeight((short)310);
         assertEquals(310, row2.getHeight());
         assertEquals(310F/20, row2.getHeightInPoints(), 0F);
index b7f7a783c527a57b802db76d391720e30587523b..bd2b8f3771a7faae971805b3fc9197274cef06e6 100644 (file)
@@ -401,6 +401,10 @@ public abstract class BaseTestSheet extends TestCase {
         assertEquals((short) 300, sheet.getDefaultRowHeight());
         assertEquals(15.0F, sheet.getDefaultRowHeightInPoints(), 0F);
 
+        Row row = sheet.createRow(1);
+        // new row inherits  default height from the sheet
+        assertEquals(sheet.getDefaultRowHeight(), row.getHeight());
+
         // Set a new default row height in twips and test getting the value in points
         sheet.setDefaultRowHeight((short) 360);
         assertEquals(18.0f, sheet.getDefaultRowHeightInPoints(), 0F);