I am trying to generate a word document with the table created like as mentioned in image with the below code that will merge cells from fourth column to make table.
Somehow there is an extra space is being added when i merged the cells like as shown in image.
var rowHeaderLabels = new List<string> { "Space", "Lighting Density" };
var columnHeaderLabels = new List<string> { "Occupants per 1000sf", "Sensible BTUH", "Latent BTUH" };
var assumedLoadsTable = RenderTableWithMergedHeader(rowHeaderLabels, "Equipment Density", "Occupant", columnHeaderLabels, assumedHeatingAndCoolingData);
and this is code for RenderTableWithMergedHeader
method
private static Table RenderTableWithMergedHeader(List<string> rowsHeaderLabel,string lastColumnName,string mergedColumnLabel, List<string> columnsHeaderLabel, List<List<string>> contentData)
{
var table = new Table();
var tableProperties = RenderTableProperties();
table.AppendChild(tableProperties);
TableRow tableHeaderRowA = new TableRow();
TableRow tableHeaderRowB = new TableRow();
foreach (var colName in rowsHeaderLabel)
{
tableHeaderRowA.Append(RenderTableHeaderCell(colName));
}
table.Append(tableHeaderRowA);
// problem is here with tableHeaderRowA
tableHeaderRowA.Append(RenderTableHeaderCell(lastColumnName, 1, MergedCellValues.Restart));
tableHeaderRowB.Append(RenderTableHeaderCell(null, 3, MergedCellValues.Continue));
tableHeaderRowA.Append(RenderTableHeaderCell(mergedColumnLabel,columnsHeaderLabel.Count));
foreach (var colName in columnsHeaderLabel)
{
tableHeaderRowB.Append(RenderTableHeaderCell(colName));
}
table.Append(tableHeaderRowB);
// Content binding code
return table;
}
and this is code for RenderTableHeaderCell
method
public static TableCell RenderTableHeaderCell(string columnName, int horizontalSpan = 1, MergedCellValues? verticalMerge = null)
{
TableCell tableCell = new TableCell();
TableCellVerticalAlignment tableCellVerticalAlignment = new TableCellVerticalAlignment() { Val = TableVerticalAlignmentValues.Center };
Paragraph paragraph = new Paragraph();
TableCellProperties tableCellProperties = RenderTablecellProperties();
tableCellProperties.Append(tableCellVerticalAlignment);
if (horizontalSpan != 1)
{
tableCellProperties.Append(new GridSpan() { Val = horizontalSpan });
}
if (verticalMerge != null)
{
VerticalMerge vm = new VerticalMerge() { Val = verticalMerge };
tableCellProperties.Append(vm);
}
var paragraphProperties = RenderParagraphJustification();
paragraph.Append(paragraphProperties);
Run newChild = RenderRun(columnName);
paragraph.AppendChild(newChild);
tableCell.Append(tableCellProperties);
tableCell.Append(paragraph);
return tableCell;
}
and this is generating the table like in the image below
and i am looking for the table looks like in the below image
I am not sure where i am doing wrong with the above code, Could any one please suggest any ideas on how to remove that space that was showing in first image.
many thanks in advance
I have resolved my problem by modifying the below method
private static Table RenderTableWithMergedHeader(List<string> rowsHeaderLabel, string mergedColumnName, List<string> columnsHeaderLabel, List<List<string>> contentData)
{
var table = new Table();
var tableProperties = RenderTableProperties();
table.AppendChild(tableProperties);
TableRow tableHeaderRowA = new TableRow();
TableRow tableHeaderRowB = new TableRow();
foreach (var colName in rowsHeaderLabel)
{
tableHeaderRowA.Append(RenderTableHeaderCell(colName, 1, MergedCellValues.Restart));
tableHeaderRowB.Append(RenderTableHeaderCell(null, 1, MergedCellValues.Continue));
}
tableHeaderRowA.Append(RenderTableHeaderCell(mergedColumnName, columnsHeaderLabel.Count));
foreach (var colName in columnsHeaderLabel)
{
tableHeaderRowB.Append(RenderTableHeaderCell(colName));
}
table.Append(tableHeaderRowA);
table.Append(tableHeaderRowB);
foreach (var rowData in contentData)
{
var row = new TableRow();
foreach (var cellData in rowData)
{
row.Append(RenderContentCell(cellData));
}
table.Append(row);
}
return table;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.