private static Table CreateAndInsertInvoiceTableAfter(Table t, ref DocX document)
{
// Grab data from somewhere (Most likely a database)
schooldbEntities DAO = new schooldbEntities();
List<teacher> tlist = (from tt in DAO.teachers select tt).ToList<teacher>();
/*
* The trick to replacing one Table with another,
* is to insert the new Table after the old one,
* and then remove the old one.
*/
Table invoice_table = t.InsertTableAfterSelf(tlist.Count + 1, 4);
invoice_table.Design = TableDesign.LightShadingAccent1;
#region Table title
Formatting table_title = new Formatting();
table_title.Bold = true;
invoice_table.Rows[0].Cells[0].Paragraph.InsertText("Serial No.", false, table_title);
invoice_table.Rows[0].Cells[0].Paragraph.Alignment = Alignment.center;
invoice_table.Rows[0].Cells[1].Paragraph.InsertText("Employee Name", false, table_title);
invoice_table.Rows[0].Cells[1].Paragraph.Alignment = Alignment.center;
invoice_table.Rows[0].Cells[2].Paragraph.InsertText("Account No.", false, table_title);
invoice_table.Rows[0].Cells[2].Paragraph.Alignment = Alignment.center;
invoice_table.Rows[0].Cells[3].Paragraph.InsertText("Salary", false, table_title);
invoice_table.Rows[0].Cells[3].Paragraph.Alignment = Alignment.center;
#endregion
// Loop through the rows in the Table and insert data from the data source.
for (int row = 1; row < tlist.Count; row++)
{
Paragraph cell_paragraph = invoice_table.Rows[row].Cells[0].Paragraph;
cell_paragraph.InsertText(row.ToString(), false);
cell_paragraph = invoice_table.Rows[row].Cells[1].Paragraph;
cell_paragraph.InsertText(tlist[row - 1].TeacherName.ToString(), false);
cell_paragraph = invoice_table.Rows[row].Cells[2].Paragraph;
cell_paragraph.InsertText(tlist[row - 1].Account_Number.ToString(), false);
cell_paragraph = invoice_table.Rows[row].Cells[3].Paragraph;
cell_paragraph.InsertText(tlist[row - 1].BasicSalary.ToString(), false);
}
// Let the tables coloumns expand to fit its contents.
invoice_table.AutoFit = AutoFit.Contents;
// Center the Table
invoice_table.Alignment = Alignment.center;
// Return the invloce table now that it has been created.
return invoice_table;
}