Table extends Component { public Column getColumnByIndex(int index) { if (index < 0) { throw new IllegalArgumentException("index should be nonnegative integer."); } int lastIndex = getColumnCount() - 1; if (index > lastIndex) { appendColumns(index - lastIndex); } int result = 0; Column col = null; for (Node n : new DomNodeList(mTableElement.getChildNodes())) { if (n instanceof TableTableHeaderColumnsElement) { col = getHeaderColumnByIndex((TableTableHeaderColumnsElement) n, index); if (col != null) { return col; } result += getHeaderColumnCount((TableTableHeaderColumnsElement) n); } if (n instanceof TableTableColumnElement) { col = getColumnInstance((TableTableColumnElement) n, 0); result += col.getColumnsRepeatedNumber(); } if ((result > index) && (col != null)) { return getColumnInstance(col.getOdfElement(), index - (result - col.getColumnsRepeatedNumber())); } } return null; } private  Table(TableContainer container, TableTableElement table); static Table getInstance(TableTableElement element); static Table newTable(TableContainer tableContainer); static Table newTable(TableContainer tableContainer, int numRows, int numCols); static Table newTable(TableContainer tableContainer, int numRows, int numCols, 
			double marginLeft, double marginRight); static Table newTable(TableContainer tableContainer, int numRows, int numCols, int headerRowNumber,
			int headerColumnNumber); static Table newTable(TableContainer tableContainer, String[] rowLabel, String[] columnLabel, double[][] data); static Table newTable(TableContainer tableContainer, String[] rowLabel, String[] columnLabel, String[][] data); double getWidth(); void setWidth(double width); void applyStyle(TableTemplate template); int getRowCount(); int getColumnCount(); Row appendRow(); List<Row> appendRows(int rowCount); Column appendColumn(); List<Column> appendColumns(int columnCount); TableTableElement getOdfElement(); List<Column> insertColumnsBefore(int index, int columnCount); void removeColumnsByIndex(int startIndex, int deleteColCount); List<Row> insertRowsBefore(int index, int rowCount); List<Column> getColumnList(); Iterator<Column> getColumnIterator(); List<Row> getRowList(); Iterator<Row> getRowIterator(); Column getColumnByIndex(int index); Row getRowByIndex(int index); void removeRowsByIndex(int startIndex, int deleteRowCount); void remove(); int getHeaderRowCount(); int getHeaderColumnCount(); String getTableName(); void setTableName(String tableName); boolean isProtected(); void setProtected(boolean isProtected); boolean isCellStyleInheritance(); void setCellStyleInheritance(boolean isEnabled); boolean isUseRepeat(); void setUseRepeat(boolean isSingle); CellRange getCellRangeByPosition(int startCol, int startRow, int endCol, int endRow); CellRange getCellRangeByPosition(String startAddress, String endAddress); CellRange getCellRangeByName(String name); Cell getCellByPosition(int colIndex, int rowIndex); Cell getCellByPosition(String address); void setVerticalMargin(double spaceTop, double spaceBottom); DefaultStyleHandler getStyleHandler();  }
@Test public void testGetColumnByIndex() { testNewTable(); mOdtDoc = loadODTDocument("CreateTableCase.odt"); Table table = mOdtDoc.getTableByName("Table3"); Assert.assertNotNull(table); boolean illegalArgumentFlag = false; try { table.getColumnByIndex(-1); } catch (IllegalArgumentException ie) { if ("index should be nonnegative integer.".equals(ie.getMessage())) { illegalArgumentFlag = true; } } Assert.assertTrue(illegalArgumentFlag); Column column = table.getColumnByIndex(2); Assert.assertNotNull(column); Assert.assertEquals("string6", column.getCellByIndex(2).getStringValue()); column = table.getColumnByIndex(8); Assert.assertNotNull(column); Cell cell = column.getCellByIndex(6); Assert.assertNotNull(cell); cell.setStringValue("string86"); Assert.assertEquals("string86", cell.getStringValue()); }