/** Error Cell type (5) @see #setCellType(int) @see #getCellType() */
public final static int CELL_TYPE_ERROR = 5;
+ private static final String FILE_FORMAT_NAME = "BIFF8";
+ /**
+ * The maximum number of columns in BIFF8
+ */
+ private static final int LAST_COLUMN_NUMBER = 255; // 2^8 - 1
+ private static final String LAST_COLUMN_NAME = "IV";
+
public final static short ENCODING_UNCHANGED = -1;
public final static short ENCODING_COMPRESSED_UNICODE = 0;
public final static short ENCODING_UTF_16 = 1;
/**
* @throws RuntimeException if the bounds are exceeded.
*/
- private void checkBounds(int cellNum) {
- if (cellNum > 255) {
- throw new IllegalArgumentException("You cannot have more than 255 columns "+
- "in a given row (IV). Because Excel can't handle it");
- }
- else if (cellNum < 0) {
- throw new IllegalArgumentException("You cannot reference columns with an index of less then 0.");
- }
+ private static void checkBounds(int cellIndex) {
+ if (cellIndex < 0 || cellIndex > LAST_COLUMN_NUMBER) {
+ throw new IllegalArgumentException("Invalid column index (" + cellIndex
+ + "). Allowable column range for " + FILE_FORMAT_NAME + " is (0.."
+ + LAST_COLUMN_NUMBER + ") or ('A'..'" + LAST_COLUMN_NAME + "')");
+ }
}
/**
import org.apache.poi.ss.formula.FormulaRenderer;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.model.SharedStringsTable;
-import org.apache.poi.POIXMLException;
import org.apache.poi.util.POILogger;
import org.apache.poi.util.POILogFactory;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
public final class XSSFCell implements Cell {
private static POILogger logger = POILogFactory.getLogger(XSSFCell.class);
+ private static final String FILE_FORMAT_NAME = "BIFF12";
/**
* The maximum number of columns in SpreadsheetML
*/
- public static final int MAX_COLUMN_NUMBER = 16384; //2^14
+ public static final int MAX_COLUMN_NUMBER = 16384; // 2^14
+ private static final int LAST_COLUMN_NUMBER = MAX_COLUMN_NUMBER-1;
+ private static final String LAST_COLUMN_NAME = "XFD";
private static final String FALSE_AS_STRING = "0";
private static final String TRUE_AS_STRING = "1";
/**
* @throws RuntimeException if the bounds are exceeded.
*/
- private static void checkBounds(int cellNum) {
- if (cellNum > MAX_COLUMN_NUMBER) {
- throw new IllegalArgumentException("You cannot have more than "+MAX_COLUMN_NUMBER+" columns " +
- "in a given row because Excel can't handle it");
- } else if (cellNum < 0) {
- throw new IllegalArgumentException("You cannot reference columns with an index of less then 0.");
+ private static void checkBounds(int cellIndex) {
+ if (cellIndex < 0 || cellIndex > LAST_COLUMN_NUMBER) {
+ throw new IllegalArgumentException("Invalid column index (" + cellIndex
+ + "). Allowable column range for " + FILE_FORMAT_NAME + " is (0.."
+ + LAST_COLUMN_NUMBER + ") or ('A'..'" + LAST_COLUMN_NAME + "')");
}
}
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.POIXMLException;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
*/
public class XSSFRow implements Row, Comparable<XSSFRow> {
+ private static final String FILE_FORMAT_NAME = "BIFF12";
/**
* The maximum number of rows in SpreadsheetML
*/
/**
* Set the row number of this row.
*
- * @param rowNum the row number (0-based)
+ * @param rowIndex the row number (0-based)
* @throws IllegalArgumentException if rowNum < 0 or greater than {@link #MAX_ROW_NUMBER}
*/
- public void setRowNum(int rowNum) {
- if(rowNum < 0) throw new IllegalArgumentException("Row number must be >= 0");
- if (rowNum > MAX_ROW_NUMBER)
- throw new IllegalArgumentException("You cannot have more than "+MAX_ROW_NUMBER+" rows ");
-
- this.row.setR(rowNum + 1);
+ public void setRowNum(int rowIndex) {
+ if (rowIndex < 0 || rowIndex >= MAX_ROW_NUMBER) {
+ throw new IllegalArgumentException("Invalid row index (" + rowIndex
+ + "). Allowable row range for " + FILE_FORMAT_NAME
+ + " is (0.." + (MAX_ROW_NUMBER-1) + ")");
+ }
+ row.setR(rowIndex + 1);
}
/**
cell = row.createCell(100);
assertEquals("CW101", cell.getCTCell().getR());
- row = sheet.createRow(XSSFRow.MAX_ROW_NUMBER);
+ row = sheet.createRow(XSSFRow.MAX_ROW_NUMBER-1);
cell = row.createCell(100);
- assertEquals("CW1048577", cell.getCTCell().getR());
+ assertEquals("CW1048576", cell.getCTCell().getR());
- row = sheet.createRow(XSSFRow.MAX_ROW_NUMBER);
- cell = row.createCell(XSSFCell.MAX_COLUMN_NUMBER);
- assertEquals("XFE1048577", cell.getCTCell().getR());
+ row = sheet.createRow(XSSFRow.MAX_ROW_NUMBER-1);
+ cell = row.createCell(XSSFCell.MAX_COLUMN_NUMBER-1);
+ assertEquals("XFD1048576", cell.getCTCell().getR());
try {
- sheet.createRow(XSSFRow.MAX_ROW_NUMBER + 1);
- fail("expecting exception when rownum > XSSFRow.MAX_ROW_NUMBER");
+ sheet.createRow(XSSFRow.MAX_ROW_NUMBER);
+ fail("expecting exception when rownum >= XSSFRow.MAX_ROW_NUMBER");
} catch(IllegalArgumentException e){
;
}
+ row = sheet.createRow(100);
try {
- row = sheet.createRow(100);
- row.createCell(XSSFCell.MAX_COLUMN_NUMBER + 1);
- fail("expecting exception when columnIndex > XSSFCell.MAX_COLUMN_NUMBER");
+ row.createCell(XSSFCell.MAX_COLUMN_NUMBER);
+ fail("expecting exception when columnIndex >= XSSFCell.MAX_COLUMN_NUMBER");
} catch(IllegalArgumentException e){
;
}