Creating table via DocumentBuilder.
Aspose Words for Java 19.10
Output Attached
Reproduction code:
@Test
public void testStaggeredHorizontalMerge() throws Exception {
ClassLoader classLoader = getClass().getClassLoader();
com.aspose.words.Document document = new com.aspose.words.Document();
document.removeAllChildren();
DocumentBuilder builder = new DocumentBuilder(document);
builder.write("Table of 3 columns with rows containing staggered horizontal merges:");
// Add a table with ONLY cells with staggered horizontal merge
addStaggeredCells(builder);
builder.endTable();
builder.insertParagraph();
builder.write ("Table with same rows but adding a row without any merged cells:");
// Use same code to create same staggered horizontal merge
// But then add a row containing only unmerged cells.
addStaggeredCells(builder);
builder.insertCell();
builder.write ("10");
builder.insertCell();
builder.write ("11");
builder.insertCell();
builder.write ("12");
builder.endRow();
builder.endTable();
builder.insertParagraph();
builder.write ("I expect the first three rows of each table to render identically since they all contain 3 cells and are created with the same code.");
document.save("staggered-cells.docx");
}
void addStaggeredCells (DocumentBuilder builder) {
com.aspose.words.Table table = builder.startTable();
Cell cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.NONE);
builder.write ("1");
cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
builder.write ("2");
cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
builder.endRow();
cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
builder.write ("4");
cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
builder.endRow();
cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
builder.write ("7");
cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
cell = builder.insertCell();
cell.getCellFormat().setHorizontalMerge(CellMerge.NONE);
builder.write ("9");
builder.endRow();
}