Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DocX clone table and insert at index

I am using C# to make a simple Windows app using Novacode to manipulate a Word document.

I have a source table in my Word document that I want to clone. I am able to find the source table okay using this code:

Table sourceTable = document.Tables[3]; 

I can see by the rows and columns that this is in fact the table that I want to clone.

I have a string in my Word doc that right after it I want to insert my cloned source table. In fact, I may need to insert it more than once.

I don't know how to find my string, the index of it, and then insert the one or more cloned tables at that index.

Thanks.

like image 701
Brian Stanley Avatar asked Jul 02 '14 15:07

Brian Stanley


1 Answers

Here is how I do it, I use a tag that I insert and replace with table:

// Add a Table to this document.
var table = document.AddTable(2, 3);

// Specify some properties for this Table.
table.Alignment = Alignment.center;

// Add content to this Table.
table.Rows[0].Cells[0].Paragraphs.First().Append("A");
table.Rows[0].Cells[1].Paragraphs.First().Append("B");
table.Rows[0].Cells[2].Paragraphs.First().Append("C");
table.Rows[1].Cells[0].Paragraphs.First().Append("D");
table.Rows[1].Cells[1].Paragraphs.First().Append("E");
table.Rows[1].Cells[2].Paragraphs.First().Append("F");

// Insert table at index where tag #TABLE# is in document.
document.InsertTable(table));
foreach (var paragraph in document.Paragraphs)
{
    paragraph.FindAll("#TABLE#").ForEach(index => paragraph.InsertTableAfterSelf((table)));
}

//Remove tag
document.ReplaceText("#TABLE#", ""); 
like image 109
Vilhelm Avatar answered Oct 30 '22 13:10

Vilhelm