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 2009/04/03 18:42:39 UTC
svn commit: r761723 - in /poi/trunk/src:
java/org/apache/poi/ss/SpreadsheetVersion.java
java/org/apache/poi/ss/util/CellReference.java
testcases/org/apache/poi/ss/TestSpreadsheetVersion.java
Author: yegor
Date: Fri Apr 3 16:42:39 2009
New Revision: 761723
URL: http://svn.apache.org/viewvc?rev=761723&view=rev
Log:
added SpreadsheetVersion enum to hold version-specific properties such as maximum number of rows and columns, etc.
Added:
poi/trunk/src/java/org/apache/poi/ss/SpreadsheetVersion.java (with props)
poi/trunk/src/testcases/org/apache/poi/ss/TestSpreadsheetVersion.java (with props)
Modified:
poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java
Added: poi/trunk/src/java/org/apache/poi/ss/SpreadsheetVersion.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/SpreadsheetVersion.java?rev=761723&view=auto
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/SpreadsheetVersion.java (added)
+++ poi/trunk/src/java/org/apache/poi/ss/SpreadsheetVersion.java Fri Apr 3 16:42:39 2009
@@ -0,0 +1,122 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ss;
+
+import org.apache.poi.ss.util.CellReference;
+
+/**
+ * This enum allows spreadsheets from multiple Excel versions to be handled by the common code.
+ * Properties of this enum correspond to attributes of the <i>spreadsheet</i> that are easily
+ * discernable to the user. It is not intended to deal with low-level issues like file formats.
+ * <p/>
+ *
+ * For internal POI use only
+ *
+ * @author Josh Micich
+ * @author Yegor Kozlov
+ */
+public enum SpreadsheetVersion {
+ /**
+ * Excel97 format aka BIFF8
+ * <ul>
+ * <li>The total number of available columns is 256 (2^8)</li>
+ * <li>The total number of available rows is 64k (2^16)</li>
+ * <li>The maximum number of arguments to a function is 30</li>
+ * <li>Number of conditional format conditions on a cell is 3</li>
+ * </ul>
+ */
+ EXCEL97(0x10000, 0x0100, 30, 3),
+
+ /**
+ * Excel2007
+ *
+ * <ul>
+ * <li>The total number of available columns is 16K (2^14)</li>
+ * <li>The total number of available rows is 1M (2^20)</li>
+ * <li>The maximum number of arguments to a function is 255</li>
+ * <li>Number of conditional format conditions on a cell is unlimited
+ * (actually limited by available memory in Excel)</li>
+ * <ul>
+ */
+ EXCEL2007(0x100000, 0x4000, 255, Integer.MAX_VALUE);
+
+ private final int _maxRows;
+ private final int _maxColumns;
+ private final int _maxFunctionArgs;
+ private final int _maxCondFormats;
+
+ private SpreadsheetVersion(int maxRows, int maxColumns, int maxFunctionArgs, int maxCondFormats) {
+ _maxRows = maxRows;
+ _maxColumns = maxColumns;
+ _maxFunctionArgs = maxFunctionArgs;
+ _maxCondFormats = maxCondFormats;
+ }
+
+ /**
+ * @return the maximum number of usable rows in each spreadsheet
+ */
+ public int getMaxRows() {
+ return _maxRows;
+ }
+
+ /**
+ * @return the last (maximum) valid row index, equals to <code> getMaxRows() - 1 </code>
+ */
+ public int getLastRowIndex() {
+ return _maxRows - 1;
+ }
+
+ /**
+ * @return the maximum number of usable columns in each spreadsheet
+ */
+ public int getMaxColumns() {
+ return _maxColumns;
+ }
+
+ /**
+ * @return the last (maximum) valid column index, equals to <code> getMaxColumns() - 1 </code>
+ */
+ public int getLastColumnIndex() {
+ return _maxColumns - 1;
+ }
+
+ /**
+ * @return the maximum number arguments that can be passed to a multi-arg
+ * function (e.g. COUNTIF)
+ */
+ public int getMaxFunctionArgs() {
+ return _maxFunctionArgs;
+ }
+
+ /**
+ *
+ * @return the maximum number of conditional format conditions on a cell
+ */
+ public int getMaxConditionalFormats() {
+ return _maxCondFormats;
+ }
+
+ /**
+ *
+ * @return the last valid column index in a ALPHA-26 representation
+ * ( <code>IV</code> or <code>XFD</code>).
+ */
+ public String getLastColumnName() {
+ return CellReference.convertNumToColString(getLastColumnIndex());
+ }
+}
Propchange: poi/trunk/src/java/org/apache/poi/ss/SpreadsheetVersion.java
------------------------------------------------------------------------------
svn:executable = *
Modified: poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java?rev=761723&r1=761722&r2=761723&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java Fri Apr 3 16:42:39 2009
@@ -388,7 +388,7 @@
* representation.
* eg column #3 -> D
*/
- protected static String convertNumToColString(int col) {
+ public static String convertNumToColString(int col) {
// Excel counts column A as the 1st column, we
// treat it as the 0th one
int excelColNum = col + 1;
Added: poi/trunk/src/testcases/org/apache/poi/ss/TestSpreadsheetVersion.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/TestSpreadsheetVersion.java?rev=761723&view=auto
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/TestSpreadsheetVersion.java (added)
+++ poi/trunk/src/testcases/org/apache/poi/ss/TestSpreadsheetVersion.java Fri Apr 3 16:42:39 2009
@@ -0,0 +1,49 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+package org.apache.poi.ss;
+
+import junit.framework.TestCase;
+
+/**
+ * Check that all enum values are properly set
+ *
+ * @author Yegor Kozlov
+ */
+public class TestSpreadsheetVersion extends TestCase {
+
+ public void testExcel97(){
+ SpreadsheetVersion v = SpreadsheetVersion.EXCEL97;
+ assertEquals(1 << 8, v.getMaxColumns());
+ assertEquals(v.getMaxColumns() - 1, v.getLastColumnIndex());
+ assertEquals(1 << 16, v.getMaxRows());
+ assertEquals(v.getMaxRows() - 1, v.getLastRowIndex());
+ assertEquals(30, v.getMaxFunctionArgs());
+ assertEquals(3, v.getMaxConditionalFormats());
+ assertEquals("IV", v.getLastColumnName());
+ }
+
+ public void testExcel2007(){
+ SpreadsheetVersion v = SpreadsheetVersion.EXCEL2007;
+ assertEquals(1 << 14, v.getMaxColumns());
+ assertEquals(v.getMaxColumns() - 1, v.getLastColumnIndex());
+ assertEquals(1 << 20, v.getMaxRows());
+ assertEquals(v.getMaxRows() - 1, v.getLastRowIndex());
+ assertEquals(255, v.getMaxFunctionArgs());
+ assertEquals(Integer.MAX_VALUE, v.getMaxConditionalFormats());
+ assertEquals("XFD", v.getLastColumnName());
+ }
+}
Propchange: poi/trunk/src/testcases/org/apache/poi/ss/TestSpreadsheetVersion.java
------------------------------------------------------------------------------
svn:executable = *
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org