Search code examples
mergecellsasposeaspose.words

How to draw table with merged cells using Apose.Words



I have a problem with drawing table using Aspose.Words

So I need to get this result table:
-link to proper table view -

To draw this table I've written the next code:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Table table = builder.startTable();

builder.insertCell();
builder.write("ROW 1");

builder.insertCell();
builder.getCellFormat().setHorisontalMerge(CellMerge.FIRST);
builder.write("VALUE 1");

builder.insertCell();
builder.getCellFormat().setHorisontalMerge(CellMerge.PREVIOUS);

builder.insertCell();
builder.getCellFormat().setHorisontalMerge(CellMerge.PREVIOUS);

builder.endRow();

// next row
builder.insertCell();
builder.write("ROW 2");

builder.insertCell();
builder.write("VLAUE 2_1");

builder.insertCell();
builder.write("VLAUE 2_2");

builder.insertCell();
builder.write("VLAUE 2_3");

builder.endRow();
builder.endTable()

But as usually in reality.. I'm getting next table:
- link to incorrect table view-

My question is why cell 'VALUE 1' doesn't cover all "VALUE 2_*" cells from "ROW 2", why does it cover only one cell "VALUE 2_1"?
And how can I draw proper table from my example?


Solution

  • First off, please upgrade to the latest version of Aspose.Words for Java i.e. 15.6.0. Secondly, I have fixed your code as follows:

    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);
    
    Table table = builder.startTable();
    
    builder.insertCell();    
    builder.write("ROW 1");
    
    builder.insertCell();
    builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
    builder.write("VALUE 1");
    
    builder.insertCell();
    builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
    
    builder.insertCell();
    builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
    
    builder.endRow();
    
    // next row
    builder.insertCell();
    builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
    builder.write("ROW 2");
    
    builder.insertCell();
    builder.write("VLAUE 2_1");
    
    builder.insertCell();
    builder.write("VLAUE 2_2");
    
    builder.insertCell();
    builder.write("VLAUE 2_3");
    
    builder.endRow();
    builder.endTable();
    
    doc.save(getMyDir() + "15.6.0.docx");
    

    Hope, this helps.

    I work with Aspose as Developer Evangelist.