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

Reply via email to