Hi,
I want to make a table header with both horizontal and vertical merged cells in Java, just like attached screenshot, but the following codes don’t work - the right part of the result table header is messy and incorrect:
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);
builder.getCellFormat().getBorders().setLineStyle(LineStyle.SINGLE);
builder.getCellFormat().getBorders().setColor(Color.GRAY);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(80);
builder.write("Individual Goals");
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(160);
builder.write("Measures");
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(40);
builder.write("Weighting");
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.NONE);
builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(120);
builder.write("Targets");
// This cell is merged to the previous and should be empty.
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
builder.getCellFormat().setWidth(0);
// This cell is merged to the previous and should be empty.
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
builder.getCellFormat().setWidth(0);
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(100);
builder.write("Mid Year Review");
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(100);
builder.write("Final Review");
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(200);
builder.write("Comments");
builder.endRow();
// This cell is vertically merged to the cell above and should be empty.
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
builder.getCellFormat().setWidth(80);
// This cell is vertically merged to the cell above and should be empty.
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
builder.getCellFormat().setWidth(160);
// This cell is vertically merged to the cell above and should be empty.
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
builder.getCellFormat().setWidth(40);
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.NONE);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_LIGHT_BLUE);
builder.getCellFormat().setWidth(40);
builder.write("Threshold");
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_LIGHT_BLUE);
builder.getCellFormat().setWidth(40);
builder.write("Business Plan");
setStyle(builder, Color.WHITE, FONT_SIZE_TEXT, true, ParagraphAlignment.CENTER);
builder.insertCell();
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_LIGHT_BLUE);
builder.getCellFormat().setWidth(40);
builder.write("Excellent");
// This cell is vertically merged to the cell above and should be empty.
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(0);
// This cell is vertically merged to the cell above and should be empty.
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(0);
// This cell is vertically merged to the cell above and should be empty.
builder.insertCell();
builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
builder.getCellFormat().getShading().setBackgroundPatternColor(COLOR_BLUE);
builder.getCellFormat().setWidth(0);
builder.endRow();
It took me a long time trying to fix the issue, but didn’t prevail. Could anyone help me?
Thanks very much.
Mark