Hi Alain, please review revision 1875901.
I think it would be better to not add the cells in XSLFTable.initializeRow, as this changes a lot the way how the tables were used up till now. So basically there are two modes in which to look at the tables: * generating them from the scratch: so you would add each row and each cell explicitly like one would generate html tables * adding a cell to an existing row like in Excel, where the cells of the surrounding rows need to be filled accordingly I think the second operation could be provided more explicitly and not via a call to XSLFTableRow.addCell, i.e. there's too much "magic" involved for me. Although I've fixed the growing table grid locally [1] this dependents on the above decision. Best wishes, Andi [1] XSLFSheet ...: @Override public XSLFTable createTable(int numRows,int numCols){ if (numRows <1 || numCols <1) { throw new IllegalArgumentException("numRows and numCols must be greater than 0"); } XSLFTable sh = getDrawing().createTable(); getShapes().add(sh); sh.setParent(this); for (int r=0; r<numRows; r++) { XSLFTableRow row = sh.addRow(); if (r==0) { for (int c =0; c < numCols; c++) { row.addCell(); } } } return sh; }