You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2008/04/02 12:25:29 UTC
svn commit: r643834 - in /poi/trunk/src:
java/org/apache/poi/hssf/model/Sheet.java
testcases/org/apache/poi/hssf/data/colwidth.xls
testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
Author: yegor
Date: Wed Apr 2 03:25:18 2008
New Revision: 643834
URL: http://svn.apache.org/viewvc?rev=643834&view=rev
Log:
Fixed inconsistency between HSSFSHeet.getColumnWidth and HSSFSheet.getDefaultColumnWidth: getColumnWidth should always return width measured in 1/256th units.
Added:
poi/trunk/src/testcases/org/apache/poi/hssf/data/colwidth.xls (with props)
Modified:
poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
Modified: poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java?rev=643834&r1=643833&r2=643834&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java Wed Apr 2 03:25:18 2008
@@ -1879,12 +1879,12 @@
}
/**
- * get the width of a given column in units of 1/20th of a point width (twips?)
+ * get the width of a given column in units of 1/256th of a character width
* @param column index
* @see org.apache.poi.hssf.record.DefaultColWidthRecord
* @see org.apache.poi.hssf.record.ColumnInfoRecord
* @see #setColumnWidth(short,short)
- * @return column width in units of 1/20th of a point (twips?)
+ * @return column width in units of 1/256th of a character width
*/
public short getColumnWidth(short column)
@@ -1912,7 +1912,9 @@
}
else
{
- retval = defaultcolwidth.getColWidth();
+ //default column width is measured in characters
+ //multiply
+ retval = (short)(256*defaultcolwidth.getColWidth());
}
return retval;
}
@@ -1951,9 +1953,9 @@
}
/**
- * set the width for a given column in 1/20th of a character width units
+ * set the width for a given column in 1/256th of a character width units
* @param column - the column number
- * @param width (in units of 1/20th of a character width)
+ * @param width (in units of 1/256th of a character width)
*/
public void setColumnWidth(short column, short width)
{
Added: poi/trunk/src/testcases/org/apache/poi/hssf/data/colwidth.xls
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/data/colwidth.xls?rev=643834&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/data/colwidth.xls
------------------------------------------------------------------------------
svn:executable = *
Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/data/colwidth.xls
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java?rev=643834&r1=643833&r2=643834&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java Wed Apr 2 03:25:18 2008
@@ -870,5 +870,65 @@
public static void main(java.lang.String[] args) {
junit.textui.TestRunner.run(TestHSSFSheet.class);
- }
+ }
+
+ public void testColumnWidth() throws Exception {
+ //check we can correctly read column widths from a reference workbook
+ String filename = System.getProperty("HSSF.testdata.path") + "/colwidth.xls";
+ HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filename));
+
+ //reference values
+ int[] ref = {365, 548, 731, 914, 1097, 1280, 1462, 1645, 1828, 2011, 2194, 2377, 2560, 2742, 2925, 3108, 3291, 3474, 3657};
+
+ HSSFSheet sh = wb.getSheetAt(0);
+ for (char i = 'A'; i <= 'S'; i++) {
+ int idx = i - 'A';
+ int w = sh.getColumnWidth((short)idx);
+ assertEquals(ref[idx], w);
+ }
+
+ //the second sheet doesn't have overridden column widths
+ sh = wb.getSheetAt(1);
+ int def_width = sh.getDefaultColumnWidth();
+ for (char i = 'A'; i <= 'S'; i++) {
+ int idx = i - 'A';
+ int w = sh.getColumnWidth((short)idx);
+ //getDefaultColumnWidth returns width measued in characters
+ //getColumnWidth returns width measued in 1/256th units
+ assertEquals(def_width*256, w);
+ }
+
+ //test new workbook
+ wb = new HSSFWorkbook();
+ sh = wb.createSheet();
+ sh.setDefaultColumnWidth((short)10);
+ assertEquals(10, sh.getDefaultColumnWidth());
+ assertEquals(256*10, sh.getColumnWidth((short)0));
+ assertEquals(256*10, sh.getColumnWidth((short)1));
+ assertEquals(256*10, sh.getColumnWidth((short)2));
+ for (char i = 'D'; i <= 'F'; i++) {
+ short w = (short)(256*12);
+ sh.setColumnWidth((short)i, w);
+ assertEquals(w, sh.getColumnWidth((short)i));
+ }
+
+ //serialize and read again
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ wb.write(out);
+ out.close();
+
+ wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+ sh = wb.getSheetAt(0);
+ assertEquals(10, sh.getDefaultColumnWidth());
+ //columns A-C have default width
+ assertEquals(256*10, sh.getColumnWidth((short)0));
+ assertEquals(256*10, sh.getColumnWidth((short)1));
+ assertEquals(256*10, sh.getColumnWidth((short)2));
+ //columns D-F have custom wodth
+ for (char i = 'D'; i <= 'F'; i++) {
+ short w = (short)(256*12);
+ assertEquals(w, sh.getColumnWidth((short)i));
+ }
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org