Table extends Component { public int getColumnCount() { int result = 0; for (Node n : new DomNodeList(mTableElement.getChildNodes())) { if (n instanceof TableTableHeaderColumnsElement) { result += getHeaderColumnCount((TableTableHeaderColumnsElement) n); } if (n instanceof TableTableColumnsElement) { result += getColumnsCount((TableTableColumnsElement) n); } if (n instanceof TableTableColumnElement) { result += ((TableTableColumnElement) n).getTableNumberColumnsRepeatedAttribute(); } if (n instanceof TableTableHeaderRowsElement || n instanceof TableTableRowsElement || n instanceof TableTableRowGroupElement || n instanceof TableTableRowElement) { break; } } return result; } 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 testGetColumnCountWithColumnsInDocument() { try { SpreadsheetDocument sDoc = SpreadsheetDocument.loadDocument(ResourceUtilities .getTestResourceAsStream("Spreadsheet with Embeded Chart.ods")); List<Document> charts = sDoc.getEmbeddedDocuments(OdfMediaType.CHART); for (Document chart : charts) { Table localTable = chart.getTableByName("local-table"); int columnCount = localTable.getColumnCount(); Assert.assertEquals(2, columnCount); } } catch (Exception e) { Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e); Assert.fail(e.getMessage()); } }