Hi all,
I developed a method to create a pdf file containing a set of tables without any issues. I would like to transform this code to make the same file in the .docx extension. I was consulting the documentation and did not find anything related to colspan.
I would like the title 1 row, title 2 row, and comment to be the same width as attribute 1 and value 1. In aspose.pdf I used setColSpan(2), how could I implement the same in words?
@irpps Since there is no access to your data objects, I have created a dummy code that produces the required table:
int colSpan = 12;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Table table = builder.startTable();
// Start the first row
Cell interventionAreaRow = builder.insertCell();
interventionAreaRow.getCellFormat().getShading().setBackgroundPatternColor(new Color(45, 163, 151));
interventionAreaRow.getFirstParagraph().getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
Font indicatorFont = builder.getFont();
indicatorFont.setSize(10);
indicatorFont.setColor(new Color(255, 255, 255));
indicatorFont.setBold(true);
builder.getCellFormat().setTopPadding(10);
builder.getCellFormat().setBottomPadding(10);
// First cell in the row is not merged
builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
builder.write("TEST");
// The next cell is merged with the next
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
for (int i = 0; i < colSpan - 1; i++)
{
// The rest cells are merged with previous
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
}
builder.endRow();
// The second row is simmilar to the first one.
Cell indicatorNameRow = builder.insertCell();
indicatorNameRow.getCellFormat().getShading().setBackgroundPatternColor(new Color(255, 255, 255));
indicatorNameRow.getFirstParagraph().getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
indicatorFont.setSize(10);
indicatorFont.setColor(new Color(91, 87, 164));
indicatorFont.setBold(true);
builder.getCellFormat().setTopPadding(20);
builder.getCellFormat().setBottomPadding(20);
// It is required to reset HorizontalMerge since it is inherited from the previous cell
builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
builder.write("TEST");
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
for (int i = 0; i < colSpan; i++)
{
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
}
builder.endRow();
// In the third row the first cell is not merged
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
for (int i = 0; i < 3; i++)
{
// Each fourth cell is also not merged
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
builder.write("test");
// The next is the start of spanned cell
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
for (int j = 0; j < 2; j++)
{
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
}
}
builder.endRow();
// In the fourth row cells are not merged
for (int i = 0; i < 13; i++)
{
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
}
builder.endRow();
builder.endTable();
table.setAlignment(HorizontalAlignment.CENTER);
doc.save("C:\\Temp\\out.docx");