137 lines
4.5 KiB
Java
137 lines
4.5 KiB
Java
/* ====================================================================
|
|
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.
|
|
* <p>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.
|
|
*/
|
|
public enum SpreadsheetVersion {
|
|
/**
|
|
* Excel97 format aka BIFF8
|
|
* <ul>
|
|
* <li>The total number of available rows is 64k (2^16)</li>
|
|
* <li>The total number of available columns is 256 (2^8)</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>
|
|
* <li>Number of cell styles is 4000</li>
|
|
* <li>Length of text cell contents is 32767</li>
|
|
* </ul>
|
|
*/
|
|
EXCEL97(0x10000, 0x0100, 30, 3, 4000, 32767),
|
|
|
|
/**
|
|
* Excel2007
|
|
*
|
|
* <ul>
|
|
* <li>The total number of available rows is 1M (2^20)</li>
|
|
* <li>The total number of available columns is 16K (2^14)</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>
|
|
* <li>Number of cell styles is 64000</li>
|
|
* <li>Length of text cell contents is 32767</li>
|
|
* <ul>
|
|
*/
|
|
EXCEL2007(0x100000, 0x4000, 255, Integer.MAX_VALUE, 64000, 32767);
|
|
|
|
private final int _maxRows;
|
|
private final int _maxColumns;
|
|
private final int _maxFunctionArgs;
|
|
private final int _maxCondFormats;
|
|
private final int _maxCellStyles;
|
|
private final int _maxTextLength;
|
|
|
|
private SpreadsheetVersion(int maxRows, int maxColumns, int maxFunctionArgs, int maxCondFormats, int maxCellStyles, int maxText) {
|
|
_maxRows = maxRows;
|
|
_maxColumns = maxColumns;
|
|
_maxFunctionArgs = maxFunctionArgs;
|
|
_maxCondFormats = maxCondFormats;
|
|
_maxCellStyles = maxCellStyles;
|
|
_maxTextLength = maxText;
|
|
}
|
|
|
|
/**
|
|
* @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 maximum number of cell styles per spreadsheet
|
|
*/
|
|
public int getMaxCellStyles() {
|
|
return _maxCellStyles;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @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());
|
|
}
|
|
|
|
/**
|
|
* @return the maximum length of a text cell
|
|
*/
|
|
public int getMaxTextLength() {
|
|
return _maxTextLength;
|
|
}
|
|
}
|