Hi,
Thank you for the support. That works fine. But our business logic needs to create table first and then move to each cell, find out the span and merge it. I have done two sample codes. In the first one, it is perfect, but in the second one the cell with identification “6” has width more than what I have set. [Assuming that the width of the merged cell is not taken into account].
Please see the two code samples below.Please check out and tell me the reason.
- Code1
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.RowFormat.Height = 50;
builder.CellFormat.Width = 100;
for (int r = 0; r < 3; r++)
{
for (int c = 0; c < 3; c++)
{
builder.InsertCell();
}
builder.EndRow();
}
builder.EndTable();
builder.MoveToCell(0, 0, 0, 0);
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.VerticalMerge = CellMerge.First;
builder.CellFormat.Width = 200;
builder.Write("1");
builder.MoveToCell(0, 0, 1, 0);
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.VerticalMerge = CellMerge.First;
builder.Write("a");
builder.MoveToCell(0, 1, 0, 0);
builder.CellFormat.VerticalMerge = CellMerge.Previous;
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 200;
builder.Write("b");
builder.MoveToCell(0, 1, 1, 0);
builder.CellFormat.VerticalMerge = CellMerge.Previous;
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.Write("b");
builder.MoveToCell(0, 0, 2, 0);
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.CellFormat.Width = 100;
builder.Write("2");
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.MoveToCell(0, 1, 2, 0);
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.CellFormat.Width = 100;
builder.Write("5");
builder.MoveToCell(0, 2, 0, 0);
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.Write("3");
builder.MoveToCell(0, 2, 1, 0);
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.CellFormat.Width = 200;
builder.Write("4");
builder.MoveToCell(0, 2, 2, 0);
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.Write("c");
- Code2
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.RowFormat.Height = 50;
builder.CellFormat.Width = 100;
for (int r = 0; r < 3; r++)
{
for (int c = 0; c < 5; c++)
{
builder.InsertCell();
}
builder.EndRow();
}
builder.EndTable();
builder.MoveToCell(0, 0, 0, 0);
builder.CellFormat.Width = 100;
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.Write("1");
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.MoveToCell(0, 0, 1, 0);
builder.CellFormat.Width = 200;
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.VerticalMerge = CellMerge.First;
builder.Write("2");
builder.MoveToCell(0, 0, 2, 0);
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.VerticalMerge = CellMerge.First;
builder.Write(" ");
builder.MoveToCell(0, 1, 1, 0);
builder.CellFormat.VerticalMerge = CellMerge.Previous;
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 200;
builder.Write(" ");
builder.MoveToCell(0, 1, 2, 0);
builder.CellFormat.VerticalMerge = CellMerge.Previous;
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.Write(" ");
builder.MoveToCell(0, 2, 1, 0);
builder.CellFormat.VerticalMerge = CellMerge.Previous;
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 200;
builder.Write(" ");
builder.MoveToCell(0, 2, 2, 0);
builder.CellFormat.VerticalMerge = CellMerge.Previous;
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.Write(" ");
builder.MoveToCell(0, 0, 3, 0);
builder.CellFormat.Width = 100;
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.Write("3");
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.MoveToCell(0, 0, 4, 0);
builder.CellFormat.Width = 100;
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.Write("4");
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.MoveToCell(0, 1, 0, 0);
builder.CellFormat.Width = 100;
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.Write("5");
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.MoveToCell(0, 1, 1, 0);
builder.MoveToCell(0, 1, 2, 0);
builder.MoveToCell(0, 1, 3, 0);
builder.CellFormat.Width = 200;
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.VerticalMerge = CellMerge.First;
builder.Write("6");
builder.MoveToCell(0, 1, 4, 0);
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.CellFormat.VerticalMerge = CellMerge.First;
builder.Write(" ");
builder.MoveToCell(0, 2, 3, 0);
builder.CellFormat.VerticalMerge = CellMerge.Previous;
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.Width = 200;
builder.Write(" ");
builder.MoveToCell(0, 2, 4, 0);
builder.CellFormat.VerticalMerge = CellMerge.Previous;
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
builder.Write(" ");
builder.MoveToCell(0, 2, 0, 0);
builder.CellFormat.Width = 100;
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.Write("7");
builder.CellFormat.VerticalMerge = CellMerge.None;
Thank you,
Ali