We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

Clone Row lose the formatting

Hi Team

I am using Aspose Version 14.2. I have facing one problem. I have table which contains 4 rows. Now last 4th row cells contains the formattings eg:- font name: verdana and font-size: 2.

Problem is if I simply clone the last row and append into the table formatting auto inherit to new row. I use the following code for this: this work fine for me.

cloneOfRow = (AsposeWord.Tables.Row)tbl.Rows[4].Clone(true);

tbl.AppendChild(cloneOfRow);

But if I want to change some cell text before clone row it loose the formatting of that cell when it add this as new row. below is code of change text before adding to table:

cloneOfRow = (AsposeWord.Tables.Row)tbl.Rows[4].Clone(true);

cloneOfRow.Cells[0].FirstParagraph.Runs.Clear();

cloneOfRow.Cells[0].FirstParagraph.AppendChild(new Aspose.Words.Run(doc, "Hello"));

tbl.AppendChild(cloneOfRow);

How can I keep the formatting same for new row even if I change the text of new clone row.?

Thanks

Deepak

Hi Deepak,

Thanks for your inquiry. Please attach 1) your input Word document, 2) output document showing the undesired behavior, 3) expected document which shows the correct formatting and 4) complete code you're using on your end here for testing. We will investigate the issue on our end and provide you more information.

Best regards,

Hi Awais,

Below are the details

Default Table

R1

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Header1

Header2

R2

Header1

Header2

After Running Code (Note: Check the first cell text of last row “R21” formatting. It should like “R2” text)

R1

Header1

Header2

R2

Header1

Header2

R21

Header1

Header2

Actually Required

R1

Header1

Header2

R2

Header1

Header2

R21

Header1

Header2

below is code we are using for this:

protected void Button1_Click(object sender, EventArgs e)
{

tbl = builder.StartTable();

//1st row
builder.InsertCell();
AddHiddenColumnData("R1", 20);

builder.InsertCell();
AddColumnData(false, true, "Header1", 120);

builder.InsertCell();
AddColumnData(false, true, "Header2", 100);

builder.EndRow();

////2nd row
builder.InsertCell();
AddHiddenColumnData("R2", 40);

builder.InsertCell();
AddColumnData(false, true, "Header1", 120);

builder.InsertCell();
AddColumnData(false, true, "Header2", 100);

builder.EndRow();

builder.EndTable();

tbl.AutoFit(AsposeWord.Tables.AutoFitBehavior.FixedColumnWidths);

doc.Save(@"D:\DealMemo_Template.doc"); // it will overwrite if file exists

}

private void AddHiddenColumnData(string stext, double width)
{
builder.Font.Name = "Tahoma";
builder.Font.Color = System.Drawing.Color.Red;
builder.Font.Bold = true;
builder.Font.Size =7;

builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.White;
builder.CellFormat.PreferredWidth = Aspose.Words.Tables.PreferredWidth.FromPoints(width);
builder.Font.Underline = AsposeWord.Underline.None;

builder.Writeln(stext);
}

private void AddColumnData(bool isTableName, bool isSubHeader, string stext, double width)
{

builder.Font.Name = "Tahoma";
builder.Font.Color = System.Drawing.Color.Black;

if (!isTableName)
{
builder.Font.Size = 8;
builder.Font.Bold = false;
}
else
{
builder.Font.Size = 12;
builder.Font.Bold = true;
}

builder.CellFormat.PreferredWidth = AsposeWord.Tables.PreferredWidth.FromPoints(width);
AsposeWord.Tables.CellFormat cellFormat = builder.CellFormat;
cellFormat.FitText = true;
cellFormat.WrapText = true;
builder.CellFormat.TopPadding = 0;
builder.CellFormat.LeftPadding = 5;
builder.CellFormat.RightPadding = 5;
builder.CellFormat.BottomPadding = 0;
builder.CellFormat.VerticalAlignment = AsposeWord.Tables.CellVerticalAlignment.Top;
builder.ParagraphFormat.Alignment = AsposeWord.ParagraphAlignment.Left;

if (isSubHeader)
{
builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.Beige;
builder.Font.Underline = AsposeWord.Underline.Single;
}
else
{
builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.White;
builder.Font.Underline = AsposeWord.Underline.None;
}
builder.Writeln(stext);

}

protected void btnClone_Click(object sender, EventArgs e)
{

doc = new AsposeWord.Document(@"D:\DealMemo_Template.doc");
builder = new AsposeWord.DocumentBuilder(doc);

tbl = doc.FirstSection.Body.Tables[0];
Aspose.Words.Tables.Row cloneOfRow;

cloneOfRow = (Aspose.Words.Tables.Row)tbl.Rows[tbl.Rows.Count - 1].Clone(true);

cloneOfRow.Cells[0].FirstParagraph.Runs.Clear();
cloneOfRow.Cells[0].FirstParagraph.AppendChild(new Aspose.Words.Run(doc, "R" + tbl.Rows.Count + 1));
tbl.AppendChild(cloneOfRow); //ADD AT LAST ROW

doc.Save(@"D:\DealMemo_TemplateOutput.doc");
}

Hi Deepak,


Thanks for the additional information. You have applied the formatting on the Run node itself. In this case, instead of removing that Run, you just need to replace its text with new text as follows:

builder = new
Aspose.Words.
DocumentBuilder(doc);

tbl = doc.FirstSection.Body.Tables[0];

Aspose.Words.Tables.Row cloneOfRow;

cloneOfRow = (Aspose.Words.Tables.Row)tbl.Rows[tbl.Rows.Count - 1].Clone(true);

//cloneOfRow.Cells[0].FirstParagraph.Runs.Clear();

cloneOfRow.Cells[0].FirstParagraph.Runs[0].Text = "R" + tbl.Rows.Count + 1;

//cloneOfRow.Cells[0].FirstParagraph.AppendChild(new Aspose.Words.Run(doc, "R" + tbl.Rows.Count + 1));

tbl.AppendChild(cloneOfRow); //ADD AT LAST ROW


I hope, this helps.

Best regards,