Author: abearez Date: Sun Dec 8 22:23:17 2019 New Revision: 1871061 URL: http://svn.apache.org/viewvc?rev=1871061&view=rev Log: Fix column addition and removal in XSLFTable
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java?rev=1871061&r1=1871060&r2=1871061&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java Sun Dec 8 22:23:17 2019 @@ -179,8 +179,9 @@ public class XSLFTable extends XSLFGraph long width = _table.getTblGrid().getGridColArray(_table.getTblGrid().sizeOfGridColArray() - 1).getW(); CTTableCol col = _table.getTblGrid().addNewGridCol(); col.setW(width); - for(CTTableRow row : _table.getTrList()) { - row.addNewTc(); + for(XSLFTableRow row : _rows) { + XSLFTableCell cell = row.addCell(); + cell.getTextBody(true); } updateRowColIndexes(); } @@ -197,8 +198,9 @@ public class XSLFTable extends XSLFGraph long width = _table.getTblGrid().getGridColArray(colIdx).getW(); CTTableCol col = _table.getTblGrid().insertNewGridCol(colIdx); col.setW(width); - for(CTTableRow row : _table.getTrList()) { - row.insertNewTc(colIdx); + for(XSLFTableRow row : _rows) { + XSLFTableCell cell = row.insertCell(colIdx); + cell.getTextBody(true); } updateRowColIndexes(); } @@ -210,8 +212,8 @@ public class XSLFTable extends XSLFGraph */ public void removeColumn(int colIdx) { _table.getTblGrid().removeGridCol(colIdx); - for(CTTableRow row : _table.getTrList()) { - row.removeTc(colIdx); + for(XSLFTableRow row : _rows) { + row.removeCell(colIdx); } updateRowColIndexes(); } Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java?rev=1871061&r1=1871060&r2=1871061&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java Sun Dec 8 22:23:17 2019 @@ -51,6 +51,7 @@ public class XSLFTableRow implements Ite return _row; } + @Override public Iterator<XSLFTableCell> iterator(){ return _cells.iterator(); } @@ -74,12 +75,41 @@ public class XSLFTableRow implements Ite _cells.add(cell); if(_table.getNumberOfColumns() < _row.sizeOfTcArray()) { - _table.getCTTable().getTblGrid().addNewGridCol().setW(Units.toEMU(100.0)); + _table.getCTTable().getTblGrid().addNewGridCol().setW(Units.toEMU(100.0)); } _table.updateRowColIndexes(); return cell; } - + + /** + * Insert a new cell at the given index. + * @param colIdx the column index. + * @since POI 4.1.2 + */ + public XSLFTableCell insertCell(int colIdx){ + CTTableCell c = _row.insertNewTc(colIdx); + c.set(XSLFTableCell.prototype()); + XSLFTableCell cell = new XSLFTableCell(c, _table); + _cells.add(colIdx, cell); + + if(_table.getNumberOfColumns() < _row.sizeOfTcArray()) { + _table.getCTTable().getTblGrid().insertNewGridCol(colIdx).setW(Units.toEMU(100.0)); + } + _table.updateRowColIndexes(); + return cell; + } + + /** + * Remove the cell at the given index. + * @param colIdx the column index. + * @since POI 4.1.2 + */ + public void removeCell(int colIdx){ + _row.removeTc(colIdx); + _cells.remove(colIdx); + _table.updateRowColIndexes(); + } + /** * Merge cells of a table row, inclusive. * Indices are 0-based. Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java?rev=1871061&r1=1871060&r2=1871061&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java Sun Dec 8 22:23:17 2019 @@ -70,9 +70,11 @@ public class TestXSLFTable { tab.insertColumn(0); assertEquals(tab.getColumnWidth(1), tab.getColumnWidth(0), 0.00001); + assertNotNull(tab.getCell(0, 0).getTextBody()); tab.addColumn(); tab.getCell(0, data[0].length + 1); assertEquals(tab.getColumnWidth(tab.getNumberOfColumns() - 2), tab.getColumnWidth(tab.getNumberOfColumns() - 1), 0.00001); + assertNotNull(tab.getCell(0, tab.getNumberOfColumns() - 1).getTextBody()); tab.removeColumn(0); tab.removeColumn(tab.getNumberOfColumns() - 1); assertEquals(data[0].length, tab.getNumberOfColumns()); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org