Im trying to populate 2 tables in .docx file from a controller. I have no problem populating the first table. But I can't seem to find a way to populate the second one. Here is my controller code.
using (WordprocessingDocument sourceDoc = WordprocessingDocument.Open(Server.MapPath("~/doc/temp.docx"), false))
using (var resultDoc = WordprocessingDocument.Create(stream, DocumentFormat.OpenXml.WordprocessingDocumentType.Document, true))
{
//Declare a TABLE class(This will get you first table of docx)
Table table = body.Elements<Table>().First();
//Accessing 1st row of the table
TableRow row = table.Elements<TableRow>().ElementAt(0);
//Accessing 2nd cell of that row
TableCell cell = row.Elements<TableCell>().ElementAt(0);
Paragraph p = cell.Elements<Paragraph>().First();
Run r = p.Elements<Run>().First();
Text text1 = r.Elements<Text>().First();
//replacing text in that CELL
text1.Text = text1.Text.Replace("xTitlex", "Title");
//Accessing 2nd ROW of That table
row = table.Elements<TableRow>().ElementAt(1);
//Accessing 2nd CELL of that row
cell = row.Elements<TableCell>().ElementAt(1);
p = cell.Elements<Paragraph>().First();
r = p.Elements<Run>().First();
text1 = r.Elements<Text>().First();
//Replacing text in that CELL
text1.Text = text1.Text.Replace("xVal1x", "Item1");
//This dont seem to work
//Declare a 2nd TABLE class(This will get you second table of docx)
Table table2 = body.Elements<Table>().Last();
TableRow row2 = table2.Elements<TableRow>().ElementAt(0);
////Accessing 2nd cell of that row
TableCell cell2 = row2.Elements<TableCell>().ElementAt(1);
Paragraph p2 = cell.Elements<Paragraph>().Last();
Run r2 = p.Elements<Run>().Last();
Text text12 = r.Elements<Text>().Last();
////replacing text in that CELL
text12.Text = text1.Text.Replace("xVal2x", "Item2");
}
stream.Seek(0, SeekOrigin.Begin);