title: Word Interop C#: Insert new page using existing page
body: <p>I have a word template file which contains a table and it has 11 rows and 3 columns. So there are 33 cells in table on first page. I fill these cell with some data, however if number of records are greater than 33 say 66, I am creating two files, each containing 33 records. I want to create single file which will contain all 66 records and there should be two pages in one file instead of two separate files. How should I do it?</p>
  
  <p>Following is the code I am using to create one doc file.</p>
  
  <pre><code>private static string FillTemplate(List&lt;ClientListItem&gt; clients, string fileName)
      {
          //Filled document file name
          var savedFileName = string.Empty;
          //Search template file in current directory
          var templateFilePath = System.AppDomain.CurrentDomain.BaseDirectory + "templateFile.doc";
  
          #region Generate file for labels
  
          object missing = System.Type.Missing;
          // Create Word application
          WORD._Application app = new WORD.Application();
  
          try
          {
              Print("Creating label document.");
              // Create new file
              WORD._Document doc = app.Documents.Open(templateFilePath);
  
              //Print("Creating app selection object");
              WORD.Selection selection = app.Selection;
  
              //If the template file contains tables
              if (selection.Tables.Count &gt; 0)
              {
                  //Use first table
                  //Table's are accessed with starting index as 1 not 0
                  var tableToUse = selection.Tables[1];
  
                  //Counter for number of parent caregivers inserted
                  var counter = 0;
                  //Number of parent caregivers
                  var numberOfParentCaregivers = clients.Count;
                  //Loop on each row
                  //Rows are accessed with starting index as 1 not 0
                  for (int rowIndex = 1; rowIndex &lt;= tableToUse.Rows.Count; rowIndex++)
                  {
                      //Loop on each column
                      //Columns are accessed with starting index as 1 not 0
                      for (int columnIndex = 1; columnIndex &lt;= tableToUse.Columns.Count; columnIndex++)
                      {
                          //If counter has reached to its limit
                          if (counter + 1 &gt; numberOfParentCaregivers)
                          {
                              //Stop
                              break;
                          }
  
                          //If current column index is even
                          if (columnIndex % 2 == 0)
                          {
                              //Do not process it
                              //Why? Check template file for yourself
                              continue;
                          }
  
                          //Get parent caregiver to set
                          var parentCaregiver = clients[counter];
  
                          Print("Generating label to add to document.");
  
                          //Get label to add to document
                          var labelToAdd = string.Format("{0} {1},{6}{2},{6} {3}, {4} {5}", parentCaregiver.Parent1LastName, parentCaregiver.Parent1FirstName,
                              parentCaregiver.Parent1StreetAddress, parentCaregiver.Parent1City, parentCaregiver.Parent1State, parentCaregiver.Parent1Zip, Environment.NewLine);
  
                          //Print(string.Format("Adding label {0} at {1}, {2} position.", labelToAdd, rowIndex, columnIndex));
  
                          //Get cell to set value
                          var tableCell = tableToUse.Cell(rowIndex, columnIndex);
                          //Set text in cell
                          tableCell.Range.Text = labelToAdd;
                          //Middle align text
                          tableCell.Range.ParagraphFormat.Alignment = WORD.WdParagraphAlignment.wdAlignParagraphCenter;
  
                          Print(string.Format("Label added {0} at {1}, {2} position.", labelToAdd, rowIndex, columnIndex));
                          counter++;
                      }
  
                      //If counter has reched to its limit
                      //i.e. no parent caregivers to process - all processed
                      if (counter + 1 &gt; numberOfParentCaregivers)
                      {
                          //stop
                          break;
                      }
                  }
              }
  
              // Set file name to save
              savedFileName = string.Format(@"{0}{1}{2}", Path.GetTempPath(), fileName, Path.GetExtension(templateFilePath));
              object fname = savedFileName;
              Print(string.Format("Saving new document at {0}", savedFileName));
              // SaveAs new file
              doc.SaveAs(ref fname, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
              Print(string.Format("{0} saved successfully.", savedFileName));
              app.Documents.Close(ref missing, ref missing, ref missing);
          }
          catch (Exception exc)
          {
              Print("Exception while generating label document");
              Print(exc.ToString());
              //Set file Name to empty string
              savedFileName = string.Empty;
          }
          finally
          {
              // Close Word application
              app.Quit(ref missing, ref missing, ref missing);
              Marshal.ReleaseComObject(app);
              app = null;
              GC.Collect();
              GC.WaitForPendingFinalizers();
              GC.Collect();
              GC.WaitForPendingFinalizers();
          }
  
          //Return saved file name
          return savedFileName;
  
      }
  </code></pre>
  
  <p>Please suggest changes so that I can create any number of pages based on number of records to add in template file.</p>
  
  <p>Thanks,
  Nikhil.</p>