diff options
author | Yegor Kozlov <yegor@apache.org> | 2009-04-03 16:42:39 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2009-04-03 16:42:39 +0000 |
commit | 05c02a42afca058b8347fffe3c2e98516bffcf40 (patch) | |
tree | 80e90fccb29c6b19d0eb57e61f6c88e520cc2dee /src/java/org/apache/poi/ss | |
parent | 0b3c4a8e74723151db6996698705284892360f23 (diff) | |
download | poi-05c02a42afca058b8347fffe3c2e98516bffcf40.tar.gz poi-05c02a42afca058b8347fffe3c2e98516bffcf40.zip |
added SpreadsheetVersion enum to hold version-specific properties such as maximum number of rows and columns, etc.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@761723 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/poi/ss')
-rwxr-xr-x | src/java/org/apache/poi/ss/SpreadsheetVersion.java | 122 | ||||
-rw-r--r-- | src/java/org/apache/poi/ss/util/CellReference.java | 2 |
2 files changed, 123 insertions, 1 deletions
diff --git a/src/java/org/apache/poi/ss/SpreadsheetVersion.java b/src/java/org/apache/poi/ss/SpreadsheetVersion.java new file mode 100755 index 0000000000..754fbdbb6b --- /dev/null +++ b/src/java/org/apache/poi/ss/SpreadsheetVersion.java @@ -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());
+ }
+}
diff --git a/src/java/org/apache/poi/ss/util/CellReference.java b/src/java/org/apache/poi/ss/util/CellReference.java index 23b4c806e8..e56bbe86f9 100644 --- a/src/java/org/apache/poi/ss/util/CellReference.java +++ b/src/java/org/apache/poi/ss/util/CellReference.java @@ -388,7 +388,7 @@ public class CellReference { * 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; |